ru.bitel.bgbilling.modules.tv.api.server

## Class ProductManager

- java.lang.Object
- - ru.bitel.bgbilling.modules.tv.api.server.ProductManager

- All Implemented Interfaces:
    ru.bitel.common.worker.Recyclable

      public class ProductManager
      extends java.lang.Object
      implements ru.bitel.common.worker.Recyclable

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ProductManager.Entry`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.util.Comparator<ProductManager.Entry>` | `ENTRY_COMPARATOR` Cортировка по приоритету, чтобы с более высоким приоритетом обсчитывалось раньше, чтобы при нехватке денег продлялось то что важнее.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProductManager(ru.bitel.bgbilling.kernel.container.managed.ServerContext context, int moduleId)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getPrimaryPriority()`
    `int` | `getSecondaryPriority()`
    `java.math.BigDecimal` | `precalculateAccount(int contractId, java.util.Date dateTo)` Будущая наработка для определения рекомендуемой к оплате суммы.
    `TvTarifficationManager.CalculateResult` | `precalculateAccountDetail(int contractId, java.util.Date dateTo)` Будущая наработка для определения рекомендуемой к оплате суммы.
    `ServiceCostCache` | `precalculateServiceCost(int contractId, java.util.Date dateTo)`
    `java.math.BigDecimal` | `productActivate(ProductSpec productSpec, ProductSpecActivationMode productSpecActivationMode, Product product, boolean sync, java.util.List<ProductEntry> productEntryList)` Deprecated.
    `java.math.BigDecimal` | `productActivate(ProductSpec productSpec, ProductSpecActivationMode productSpecActivationMode, Product product, boolean sync, java.util.List<ProductEntry> productEntryList, boolean customer)` Активация продукта
    `void` | `productDelete(Product product, boolean sync, java.util.List<ProductEntry> productEntryList)`
    `java.math.BigDecimal` | `productsProlongate(ConnectionSet connectionSet, ru.bitel.bgbilling.kernel.contract.runtime.ContractRuntime contractRuntime, int contractId, java.math.BigDecimal balance, java.math.BigDecimal limit, java.util.Date time, ProlongationType type)`
    `java.math.BigDecimal` | `productsProlongate(ConnectionSet connectionSet, int contractId, java.math.BigDecimal balance, java.math.BigDecimal limit, ProlongationType type)`
    `java.math.BigDecimal` | `productsProlongate(ru.bitel.bgbilling.modules.tv.tariff.server.TvTariffContext tvTariffContext, ru.bitel.bgbilling.modules.tv.tariff.server.TvTariffWorkerContext tvTariffWorkerContext, TvTarifficationManager tvTarifficationManager, ru.bitel.bgbilling.kernel.contract.runtime.ContractRuntime contractRuntime, int contractId, java.math.BigDecimal balance, java.math.BigDecimal limit, ru.bitel.bgbilling.kernel.tariff.tree.server.TariffModuleTreeSet tariffTreeSet, TvAccountRuntimeMap tvAccountRuntimeMap, java.util.Date currentTime, ProlongationType type)` Основной метод продления периода продукта.
    `protected void` | `recalculate(int contractId, java.util.Date timeFrom, java.util.Date timeTo)`
    `void` | `recycle()`
    `void` | `setPrimaryPriority(int primaryPriority)`
    `void` | `setSecondaryPriority(int secondaryPriority)`

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

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

- - ### Field Detail

    - #### ENTRY_COMPARATOR

          protected static final java.util.Comparator<ProductManager.Entry> ENTRY_COMPARATOR

      Cортировка по приоритету, чтобы с более высоким приоритетом обсчитывалось раньше, чтобы при нехватке денег продлялось то что важнее. Более большой priority - в начале. Также, если продукт зависит от другого продукта - он ближе к концу, чем тот, от которого он зависит.

  - ### Constructor Detail

    - #### ProductManager

          public ProductManager(ru.bitel.bgbilling.kernel.container.managed.ServerContext context,
                                int moduleId)
                         throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

  - ### Method Detail

    - #### getPrimaryPriority

          public int getPrimaryPriority()

    - #### setPrimaryPriority

          public void setPrimaryPriority(int primaryPriority)

    - #### getSecondaryPriority

          public int getSecondaryPriority()

    - #### setSecondaryPriority

          public void setSecondaryPriority(int secondaryPriority)

    - #### recycle

          public void recycle()

      Specified by:
        `recycle` in interface `ru.bitel.common.worker.Recyclable`

    - #### productsProlongate

          public java.math.BigDecimal productsProlongate(ru.bitel.bgbilling.modules.tv.tariff.server.TvTariffContext tvTariffContext,
                                                         ru.bitel.bgbilling.modules.tv.tariff.server.TvTariffWorkerContext tvTariffWorkerContext,
                                                         TvTarifficationManager tvTarifficationManager,
                                                         ru.bitel.bgbilling.kernel.contract.runtime.ContractRuntime contractRuntime,
                                                         int contractId,
                                                         java.math.BigDecimal balance,
                                                         java.math.BigDecimal limit,
                                                         ru.bitel.bgbilling.kernel.tariff.tree.server.TariffModuleTreeSet tariffTreeSet,
                                                         TvAccountRuntimeMap tvAccountRuntimeMap,
                                                         java.util.Date currentTime,
                                                         ProlongationType type)
                                                  throws ru.bitel.bgbilling.common.BGException

      Основной метод продления периода продукта.
      Parameters:
        `tvTariffContext` -
        `tvTariffWorkerContext` -
        `tvTarifficationManager` -
        `contractRuntime` -
        `contractId` -
        `balance` -
        `limit` -
        `convergenceBalance` -
        `balanceInsuffient` -
        `tariffTreeSet` -
        `tvAccountRuntime` -
        `tvAccountId` -
        `currentTime` -
        `type` - 0 - продление при активации или окончании периода,
        1 - попытка продления заблокированного при платеже, 2 - планировщик
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### productsProlongate

          public java.math.BigDecimal productsProlongate(ConnectionSet connectionSet,
                                                         ru.bitel.bgbilling.kernel.contract.runtime.ContractRuntime contractRuntime,
                                                         int contractId,
                                                         java.math.BigDecimal balance,
                                                         java.math.BigDecimal limit,
                                                         java.util.Date time,
                                                         ProlongationType type)
                                                  throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### productsProlongate

          public java.math.BigDecimal productsProlongate(ConnectionSet connectionSet,
                                                         int contractId,
                                                         java.math.BigDecimal balance,
                                                         java.math.BigDecimal limit,
                                                         ProlongationType type)
                                                  throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### productActivate

          @Deprecated
          public java.math.BigDecimal productActivate(ProductSpec productSpec,
                                                                  ProductSpecActivationMode productSpecActivationMode,
                                                                  Product product,
                                                                  boolean sync,
                                                                  java.util.List<ProductEntry> productEntryList)
                                                           throws ru.bitel.bgbilling.common.BGException

      Deprecated.
      Активация продукта
      Parameters:
        `productSpec` -
        `productSpecActivationMode` -
        `product` -
        `sync` - - нужно ли синхронизировать на MW (возможно не нужно, если активация идет через приставку и MW обратилась к нам, а мы подтвердили что можно активировать)
        `productEntryList` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### productActivate

          public java.math.BigDecimal productActivate(ProductSpec productSpec,
                                                      ProductSpecActivationMode productSpecActivationMode,
                                                      Product product,
                                                      boolean sync,
                                                      java.util.List<ProductEntry> productEntryList,
                                                      boolean customer)
                                               throws ru.bitel.bgbilling.common.BGException

      Активация продукта
      Parameters:
        `productSpec` -
        `productSpecActivationMode` -
        `product` -
        `sync` - - нужно ли синхронизировать на MW (возможно не нужно, если активация идет через приставку и MW обратилась к нам, а мы подтвердили что можно активировать)
        `productEntryList` -
        `customer` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### productDelete

          public void productDelete(Product product,
                                    boolean sync,
                                    java.util.List<ProductEntry> productEntryList)
                             throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### recalculate

          protected void recalculate(int contractId,
                                     java.util.Date timeFrom,
                                     java.util.Date timeTo)

    - #### precalculateAccount

          public java.math.BigDecimal precalculateAccount(int contractId,
                                                          java.util.Date dateTo)
                                                   throws ru.bitel.bgbilling.common.BGException

      Будущая наработка для определения рекомендуемой к оплате суммы.
      Parameters:
        `contractId` -
        `dateTo` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`
        `java.sql.SQLException`

    - #### precalculateAccountDetail

          public TvTarifficationManager.CalculateResult precalculateAccountDetail(int contractId,
                                                                                  java.util.Date dateTo)
                                                                           throws ru.bitel.bgbilling.common.BGException

      Будущая наработка для определения рекомендуемой к оплате суммы.
      Parameters:
        `contractId` -
        `dateTo` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`
        `java.sql.SQLException`

    - #### precalculateServiceCost

          public ServiceCostCache precalculateServiceCost(int contractId,
                                                          java.util.Date dateTo)
                                                   throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`