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

# Interface MegafonContractService

public interface MegafonContractService

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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)`
  Детальная информация о всех подключенных и активных продуктов и опций на договоре.
  `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 Exception
    Список продуктов для договора
    Parameters:
      `contractId` - invalid input: '<'=0 , если нужно все продукты
      `status` - возможная фильтрация по статусу или null
    Throws:
      `Exception`

  - ### checkActiveProductOnContracts

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

  - ### getHistoryList

    SearchResult<MegafonContractProductHistory> getHistoryList(Page page, int contractId, String msisdn, int productId, String productTitle, Period period) throws Exception
    Throws:
      `Exception`

  - ### checkAllowActivateProduct

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

  - ### contractProductUpdate

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

  - ### productActivateRequest

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

  - ### productDeactivateRequest

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

  - ### productActivate

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

  - ### productDeactivate

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

  - ### optionActivateRequest

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

  - ### optionActivate

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

  - ### synchronizeContractProducts

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

  - ### getContractOptions

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

  - ### MNPProcessStart

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

  - ### getContractOptionInfo

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

  - ### checkOrderStatus

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

  - ### getTariffDetailInfo

    String getTariffDetailInfo(int contractId, String msisdn) throws Exception
    Детальная информация о всех подключенных и активных продуктов и опций на договоре. Если номеров несколько, то вернёт детальную информацию по каждому номеру Если указан только 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:
      `Exception`

  - ### getCurrentBalance

    String getCurrentBalance(String msisdn) throws Exception
    Throws:
      `Exception`