Package ru.bitel.bgbilling.modules.megafon.common.service

# Interface MegafonContractService

public interface MegafonContractService

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addPayment(int contractId, String msisdn, BigDecimal amount)`
  `boolean`
  `checkActiveProductOnContracts(int productId)`
  Проверка есть ли договора с подпиской на переданный продукт в активном статусе
  `boolean`
  `checkAllowActivateProduct(MegafonContractProduct contractProduct)`
  Проверка возможности активации продукта на договоре
  `void`
  `checkOrderStatus()`
  Принудительный запуск проверки статусов заказов Мегафон.
  `void`
  `contractProductUpdate(MegafonContractProduct contractProduct)`
  Сохранение продукта в БД.
  `String`
  `getContractOptionInfo(int contractOptionId)`
  `SearchResult<MegafonContractOption>`
  `getContractOptions(Page page, int contractId)`
  Список доп.опций на договоре
  `SearchResult<MegafonContractProduct>`
  `getContractProductList(Page page, int contractId, MegafonContractProductStatus status)`
  Список продуктов для договора
  `String`
  `getCurrentBalance(String msisdn)`
  `SearchResult<MegafonContractProductHistory>`
  `getHistoryList(Page page, int contractId, String msisdn, int productId, String productTitle, Period period)`
  `String`
  `getTariffDetailInfo(int contractId, String msisdn)`
  Детальная информация о всех подключенных и активных продуктов и опций на договоре.
  `List<MegafonWeb>`
  `getWebInfo(int contractId, String msisdn)`
  `void`
  `megafonContractProductDelete(int id)`
  `MegafonContractProduct`
  `megafonContractProductGet(int id)`
  `int`
  `MNPProcessStart(int contractId, String msisdn, String additionalMsisdn)`
  Регистрация MNP процесса в биллинге для дальнейшего отслеживания
  `void`
  `optionActivate(MegafonContractProduct contractProduct, MegafonContractOption contractOption)`
  Активация доп.опции
  `void`
  `optionActivateRequest(MegafonContractProduct contractProduct, MegafonOption option)`
  Запрос в Мегафон на активацию опции
  `void`
  `productActivate(MegafonContractProduct megafonContractProduct)`
  Непосредственно активация продукта, если заказ на активацию был успешно выполнен
  `void`
  `productActivateRequest(MegafonContractProduct megafonContractProduct)`
  Запрос на активацию продукта Отправка запроса в Мегафон на создание заказа на активацию.
  `void`
  `productDeactivate(MegafonContractProduct megafonContractProduct)`
  Непосредственно деактивация продукта, если заказ на деактивацию был успешно выполнен.
  `void`
  `productDeactivateRequest(MegafonContractProduct megafonContractProduct)`
  Запрос на деактивацию продукта.
  `void`
  `synchronizeContractProducts(int contractId, String msisdn, String additionalMsisdn)`
  Синхронизация продуктов с Мегафон.

- ## Method Details

  - ### getContractProductList

    SearchResult<MegafonContractProduct> getContractProductList(Page page, int contractId, MegafonContractProductStatus status) throws ru.bitel.bgbilling.common.BGException
    Список продуктов для договора
    Parameters:
      `contractId` - invalid input: '<'=0 , если нужно все продукты
      `status` - возможная фильтрация по статусу или null
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### megafonContractProductGet

    MegafonContractProduct megafonContractProductGet(int id) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### megafonContractProductDelete

    void megafonContractProductDelete(int id) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### checkActiveProductOnContracts

    boolean checkActiveProductOnContracts(int productId) throws ru.bitel.bgbilling.common.BGException
    Проверка есть ли договора с подпиской на переданный продукт в активном статусе
    Parameters:
      `productId` - проверяемый продукт
    Returns:
      true - есть
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getHistoryList

    SearchResult<MegafonContractProductHistory> getHistoryList(Page page, int contractId, String msisdn, int productId, String productTitle, Period period) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### checkAllowActivateProduct

    boolean checkAllowActivateProduct(MegafonContractProduct contractProduct) throws ru.bitel.bgbilling.common.BGException
    Проверка возможности активации продукта на договоре
    Parameters:
      `contractProduct` - данные для проверки возможности оформления подписки
    Returns:
      true - активация возможно, false - активация невозможна ответил Мегафон
    Throws:
      `ru.bitel.bgbilling.common.BGException` - какая-то ошибка в параметрах или нет необходимых данных для проверки

  - ### contractProductUpdate

    void contractProductUpdate(MegafonContractProduct contractProduct) throws ru.bitel.bgbilling.common.BGException
    Сохранение продукта в БД. По сути 2 варианта: 1 - активация назначена в будущем, то сохраняет в БД и продукт в назначенную дату будет активирован задачей 2 - активация текущим числом Активация в прошлом запрещена
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### productActivateRequest

    void productActivateRequest(MegafonContractProduct megafonContractProduct) throws ru.bitel.bgbilling.common.BGException
    Запрос на активацию продукта Отправка запроса в Мегафон на создание заказа на активацию.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### productDeactivateRequest

    void productDeactivateRequest(MegafonContractProduct megafonContractProduct) throws ru.bitel.bgbilling.common.BGException
    Запрос на деактивацию продукта. Отправка запроса в Мегафон на создание заказа на деактивацию.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### productActivate

    void productActivate(MegafonContractProduct megafonContractProduct) throws ru.bitel.bgbilling.common.BGException
    Непосредственно активация продукта, если заказ на активацию был успешно выполнен
    Parameters:
      `megafonContractProduct` - данные продукта для активации
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### productDeactivate

    void productDeactivate(MegafonContractProduct megafonContractProduct) throws ru.bitel.bgbilling.common.BGException
    Непосредственно деактивация продукта, если заказ на деактивацию был успешно выполнен. Или может быть вызван без запросов к Мегафону, т.к. если деактивировать в биллинге, то после окончания оплаченного периода, мегафон сам приостановит продукт
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### optionActivateRequest

    void optionActivateRequest(MegafonContractProduct contractProduct, MegafonOption option) throws ru.bitel.bgbilling.common.BGException
    Запрос в Мегафон на активацию опции
    Parameters:
      `contractProduct` - активный продукт к которому активируется опция
      `option` - активируемая опция
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### optionActivate

    void optionActivate(MegafonContractProduct contractProduct, MegafonContractOption contractOption) throws ru.bitel.bgbilling.common.BGException
    Активация доп.опции
    Parameters:
      `contractProduct` - активный продукт к которому активируется опция
      `contractOption` - активируемая опция с привязкой к продукту на договоре
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### synchronizeContractProducts

    void synchronizeContractProducts(int contractId, String msisdn, String additionalMsisdn) throws ru.bitel.bgbilling.common.BGException
    Синхронизация продуктов с Мегафон. -запрос списка продуктов у Мегафон -только из активных продуктов происходит фильтрация и остаются только те, что заведены в модуле -создание и добавление таких продуктов на договор (так же добавление абон.платы, тарифа)
    Parameters:
      `contractId` - ID договора
      `msisdn` - номер для синхронизации
    Throws:
      `Exception`
      `ru.bitel.bgbilling.common.BGException`

  - ### getContractOptions

    SearchResult<MegafonContractOption> getContractOptions(Page page, int contractId) throws ru.bitel.bgbilling.common.BGException
    Список доп.опций на договоре
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### MNPProcessStart

    int MNPProcessStart(int contractId, String msisdn, String additionalMsisdn) throws ru.bitel.bgbilling.common.BGException
    Регистрация MNP процесса в биллинге для дальнейшего отслеживания
    Parameters:
      `contractId` - ID договора
      `msisdn` - переносимый номер
      `additionalMsisdn` - временный номер
    Returns:
      ID резерва баланс на договоре
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getContractOptionInfo

    String getContractOptionInfo(int contractOptionId) throws ru.bitel.bgbilling.common.BGException
    Parameters:
      `contractOptionId` - ID опции на договоре в биллинге
    Returns:
      подробная информация в JSON с остатками по подключённой опции
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### checkOrderStatus

    void checkOrderStatus() throws ru.bitel.bgbilling.common.BGException
    Принудительный запуск проверки статусов заказов Мегафон. Запускает #`MegafonCheckOrderStatus` и для всех продуктов и опций в статусе #`MegafonContractProductStatus.ACTIVATION_ORDERED` выполняется проверка выполнен ли заказ по их orderId
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getTariffDetailInfo

    String getTariffDetailInfo(int contractId, String msisdn) throws ru.bitel.bgbilling.common.BGException
    Детальная информация о всех подключенных и активных продуктов и опций на договоре. Если номеров несколько, то вернёт детальную информацию по каждому номеру Если указан только contractId, то вернётся весь список подключенных msisdn для данного договора, если указан конкретный msisdn, то данные будут взяты только для данного номера Формирует JSONArray в формате: [ { "msisdn":"9992211333", "productOfferingId":504921, "status":2, - статус из MegafonContractProductStatus "statusDescription":"Активен", "isProduct":true, - true если продукт и false если опция "contractProductId":22, "contractOptionId":-1, "optionType":0, - тип опции ordinal из enum MegafonOptionType "dateFrom":"2025-10-27 14:21:22", "dateTo":"2025-11-01 14:21:22", "tariffRemainder": - остатки по тарифу. Если это продукт, то будет несколько остатков: минуты, смс, трафик [ { "description":"Интернет", "baseValue":150 - сколько было изначально оплачено "value":44, - сколько осталось "unit":"мб" }, { "description":"Звонки", "baseValue":150 "value":117, "unit":"минут" }, { "description":"СМС", "baseValue":150 "value":100, "unit":"шт" } ] } ]
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getWebInfo

    List<MegafonWeb> getWebInfo(int contractId, String msisdn) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getCurrentBalance

    String getCurrentBalance(String msisdn) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### addPayment

    void addPayment(int contractId, String msisdn, BigDecimal amount) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`