Class SubscriptionModel

java.lang.Object
com.highdeal.pnr.hci.SubscriptionModel
All Implemented Interfaces:
XMLMarshallable

public class SubscriptionModel extends Object implements XMLMarshallable
This Java class represents a subscription in customer master data owned by a service provider; A subscription represents a business agreement between an end customer and the service provider. It includes subscribed pricing information, customer information, and the associated subscriber account that holds this subscription.

It is the result of an service offer that is subscribed to by an end customer of the service provider as part of a commercial agreement.

When a subscription is created, all the mandatory charges of the related offer are automatically activated. Charges and suboffers of the related subscription can then be activated according to the subscriber contract.

Features

Structure

A subscription may contain several sub-subscriptions, which represents subscriptions to suboffers of the root offer.

A subscription includes both a subscription context and a chronology of subscription contexts.

Type

A subscription can be:

  • Offline subscription is always charged in a batch mode and belongs to a unique batch rating group to schedule and optimize the sessions of offline charging. During the charging process, the SAP CC system generates counter snapshots (backups of the subscription counters) that enable the rerating services.
  • Hybrid subscription can be charged both in realtime and in batch modes according to the marketable service that is consumed by an end customer. Even if hybrid subscriptions belong to a batch rating group, they are not elligible to the rerating services.
  • Online subscription is charged in realtime mode and is not compatible with the rerating services

Parameter Configuration

A subscription includes parameters at different levels:

Modifying a parameter in a subscription, whatever its level, represents the same operation as:

The simplest way to do this is:

  • To get the current subscription from the server
  • To select the parameter sets and translation tables exceptions that must be applied at a specified date
  • To send the modified subscription

Notes

  • If the parameter was already redefined (the subscription did not follow the standard parameters values), it is necessary to retrieve the parameter and change its value.
  • If the parameter was not already defined, it is necessary to create a parameter with the new value and insert it at the right place.

See Also:

XML API for HCI

The XML APIs specify the following XSD fragment:

XSD Fragment

<xs:element name="subscription">
   <xs:complexType>
     <xs:sequence>
       <xs:element ref="subscriptionContext" minOccurs="0" maxOccurs="1"/>
       <xs:element ref="subscription" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element ref="chargeActivation" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element ref="additionalInformation" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element ref="counter" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="subscriptionContextChronology" minOccurs="1" maxOccurs="1">
         <xs:complexType>
           <xs:sequence>
             <xs:element ref="chronology" minOccurs="1" maxOccurs="1"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="code" type="xs:string"/> <!-- mandatory for a root subscription -->
     <xs:attribute name="reference" type="xs:string"/>
     <xs:attribute name="offerCode" type="xs:string"/> <!-- required for a root subscription -->
     <xs:attribute name="offerConditionCode" type="xs:string"/> <!-- mandatory for a root subscription -->
     <xs:attribute name="subscriberAccountCode" type="xs:string" use="required"/>
     <xs:attribute name="subscriberAccountServiceProvider" type="xs:string" use="required"/>
     <xs:attribute name="reratingLockCode" type="xs:string"/>
     <xs:attribute name="reratingLastCode" type="xs:string"/>
     <xs:attribute name="reratingLastStatus" type="ReratingLastStatusType"/>
     <xs:attribute name="reratingSuggestedDate" type="xs:dateTime"/>
     <xs:attribute name="type" type="SubscriptionTypeType"/>
     <xs:attribute name="batchRatingGroupCode" type="xs:string"/>
     <xs:attribute name="effective" type="xs:dateTime"/> <!-- mandatory for a root subscription -->
     <xs:attribute name="expiration" type="xs:dateTime"/>
     <xs:attribute name="priceFreezeEffective" type="xs:dateTime"/>
     <xs:attribute name="priceFreezeExpiration" type="xs:dateTime"/>
     <xs:attribute name="commitmentExpiration" type="xs:dateTime"/>
     <xs:attribute name="suspensionDate" type="xs:dateTime"/>
     <xs:attribute name="resumptionDate" type="xs:dateTime"/>
     <xs:attribute name="cancellationDate" type="xs:dateTime"/>
     <xs:attribute name="lastSnapshotDate" type="xs:dateTime"/>
     <xs:attribute name="overrideDependencies" type="xs:boolean" use="optional"/>
   </xs:complexType>
 </xs:element>

 <xs:simpleType name="SubscriptionTypeType">
   <xs:restriction base="xs:string">
      <xs:enumeration value="online"/>
      <xs:enumeration value="hybrid"/>
      <xs:enumeration value="offline"/>
   </xs:restriction>
 </xs:simpleType>

 <xs:simpleType name="ReratingLastStatusType">
   <xs:restriction base="xs:string">
     <xs:enumeration value="alreadyLockedFailure"/>
     <xs:enumeration value="counterRestorationFailure"/>
     <xs:enumeration value="billingFailure"/>
     <xs:enumeration value="bartRestorationFailure"/>
     <xs:enumeration value="exportFailure"/>
     <xs:enumeration value="unlockFailure"/>
     <xs:enumeration value="exportAndUnlockFailure"/>
     <xs:enumeration value="restorationSuccess"/>
     <xs:enumeration value="reratingSuccess"/>
   </xs:restriction>
 </xs:simpleType>

 <xs:element name="subscriptionContextChronology">
   <xs:complexType>
     <xs:sequence>
       <xs:element ref="chronology" minOccurs="1" maxOccurs="1"/>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

  • Field Details

    • ACTIVE_STATUS

      public static final int ACTIVE_STATUS
      Status for active subscription. Reserved for internal use.
      See Also:
    • LOCKED_STATUS

      public static final int LOCKED_STATUS
      Status for locked subscription. Reserved for internal use.
      See Also:
    • CLOSED_STATUS

      public static final int CLOSED_STATUS
      Status for closed subscription. Reserved for internal use.
      See Also:
    • NAME

      public static final String NAME
      The XML tag name of this data model: "subscription"
      See Also:
  • Constructor Details

    • SubscriptionModel

      public SubscriptionModel()
      Builds an empty SubscriptionModel.
  • Method Details

    • getParent

      public SubscriptionModel getParent()
      Returns the subscription parent.
      Returns:
      The subscription parent
      See Also:
    • setParent

      public void setParent(SubscriptionModel parent)
      Sets the parent for this subscription.
      Parameters:
      parent - The parent of the subscription
      See Also:
    • getCode

      public String getCode()
      Returns the identification code of this subscription.
      Returns:
      This subscription identification code
      See Also:
    • setCode

      public void setCode(String code)
      Sets the identification code for this subscription.
      Parameters:
      code - The identification code of subscription
      See Also:
    • getReference

      public String getReference()
      Returns the reference of this subscription.
      Returns:
      This subscription reference
      See Also:
    • setReference

      public void setReference(String reference)
      Sets the reference of this subscription.
      Parameters:
      reference - The reference of subscription
      See Also:
    • getSubscriberAccountCode

      public String getSubscriberAccountCode()
      Returns the code of the subscriber account for this subscription.
      Returns:
      The subscriber account code for this subscription
    • setSubscriberAccountCode

      public void setSubscriberAccountCode(String subscriberAccountCode)
      Sets the identification code of the subscriber account belonging this subscription.
      Parameters:
      subscriberAccountCode - The identification code of the subscriber account for this subscription
    • getSubscriberAccountServiceProvider

      public String getSubscriberAccountServiceProvider()
      Returns the service provider of the subscriber account for this subscription.
      Returns:
      The subscriber account service provider for this subscription
    • setSubscriberAccountServiceProvider

      public void setSubscriberAccountServiceProvider(String subscriberAccountServiceProvider)
      Sets the service provider of the subscriber account for this subscription.
      Parameters:
      subscriberAccountServiceProvider - The subscriber account service provider for this subscription
    • getOfferCode

      public String getOfferCode()
      Returns the code of the subscribed offer.
      Returns:
      The code of the subscribed offer
      See Also:
    • setOfferCode

      public void setOfferCode(String offerCode)
      Sets the code of the subscribed offer.
      Parameters:
      offerCode - The code
      See Also:
    • getOfferConditionCode

      public String getOfferConditionCode()
      Returns the code of the offer condition of the subscribed offer.
      Returns:
      The code of the offer condition of the subscribed offer
      See Also:
    • setOfferConditionCode

      public void setOfferConditionCode(String offerConditionCode)
      Sets the code of the offer condition of the subscribed offer.
      Parameters:
      offerConditionCode - The code of the offer condition
      See Also:
    • getReratingLockCode

      public String getReratingLockCode()
      Gets the code of the rerating operation that has locked this subscription; This code can be set for offline subscription only. The lock code corresponds to the rerating operation identifier.
      Returns:
      The code of the rerating operation that has locked this subscription
    • setReratingLockCode

      public void setReratingLockCode(String reratingLockCode)
      Sets the code of the rerating operation that has locked this subscription; Changing this code has not effect on the subscription. If needed, use the operation UnlockSubscriptionOp instead.
      Parameters:
      reratingLockCode - The code of the rerating operation that has locked this subscription
    • getBatchRatingGroupCode

      public String getBatchRatingGroupCode()
      Returns the batch rating group code that subscription has registered to; If batch rating group code is null, this subscription is online.
      Returns:
      The batch rating group code
    • setBatchRatingGroupCode

      public void setBatchRatingGroupCode(String batchRatingGroupCode)
      Sets the batch rating group code that subscription must registered to; Batch rating group code must be set to null if subscription is online.
      Parameters:
      batchRatingGroupCode - The batch rating group code
    • getType

      Returns the type of the subscription; Its type may be online, hybrid or offline
      Returns:
      The type of the subscription which is one of the values online, hybrid, or offline
    • setType

      public void setType(SubscriptionModel.SubscriptionType type)
      Sets the subscription to online, hybrid or offline; The default value is hybrid.
      Parameters:
      type - Must be one of the values online, hybrid, or offline
    • getReratingLastStatus

      public ReratingStatus getReratingLastStatus()
      Returns the rerating status of the subscription; This field maintains the last rerating state of the subscription. It can be one state among ReratingStatus.ALREADY_LOCKED_FAILURE, ReratingStatus.COUNTER_RESTORATION_FAILURE or ReratingStatus.BILLING_FAILURE for failure types or ReratingStatus.RESTORATION_SUCCESS or ReratingStatus.RERATING_SUCCESS for success types.
      Returns:
      The rerating state of the subscription
      See Also:
    • setReratingLastStatus

      public void setReratingLastStatus(ReratingStatus reratingLastStatus)
      Sets the rerating status of the subscription, which must be a value among ReratingStatus.ALREADY_LOCKED_FAILURE, ReratingStatus.COUNTER_RESTORATION_FAILURE or ReratingStatus.BILLING_FAILURE for failure types or ReratingStatus.RESTORATION_SUCCESS or ReratingStatus.RERATING_SUCCESS for success types.
      Parameters:
      reratingLastStatus - The rerating state of the subscription
      See Also:
    • getReratingSuggestedDate

      public Date getReratingSuggestedDate()
      Returns the suggested rerating date.
      Returns:
      The suggested rerating date
    • setReratingSuggestedDate

      public void setReratingSuggestedDate(Date reratingSuggestedDate)
      Sets the suggested rerating date.
      Parameters:
      reratingSuggestedDate - The suggested rerating date
    • getEffective

      public Date getEffective()
      Returns the effective date of this subscription.
      Returns:
      This subscription effective date
      See Also:
    • setEffective

      public void setEffective(Date effective)
      Sets the effective date of this subscription.
      Parameters:
      effective - The effective date of the subscription
      See Also:
    • getExpiration

      public Date getExpiration()
      Returns the expiration date of this subscription.
      Returns:
      This subscription expiration date
      See Also:
    • setExpiration

      public void setExpiration(Date expiration)
      Sets the expiration date of this subscription.
      Parameters:
      expiration - The expiration date of the subscription
      See Also:
    • getLastSnapshotDate

      public Date getLastSnapshotDate()
      Returns the last snapshot date of this subscription.
      Returns:
      The snapshot date of the subscription
      See Also:
    • setLastSnapshotDate

      public void setLastSnapshotDate(Date lastSnapshotDate)
      Sets the last snapshot date of this subscription.
      Parameters:
      lastSnapshotDate - The snapshot date of the subscription
      See Also:
    • getReratingLastCode

      public String getReratingLastCode()
      Returns the last rerating code of this subscription; This code corresponds to the last rerating operation identifier that has been launched on this subscription.
      Returns:
      The last rerating operation code of the subscription
      See Also:
    • setReratingLastCode

      public void setReratingLastCode(String reratingLastCode)
      Sets the last rerating code of this subscription; This code corresponds to the last rerating operation identifier that has been launched on this subscription.
      Parameters:
      reratingLastCode - The last rerating operation code of the subscription
      See Also:
    • getPriceFreezeEffective

      public Date getPriceFreezeEffective()
      Returns the price freeze effective date of this subscription.
      Returns:
      This subscription price freeze effective date
      See Also:
    • setPriceFreezeEffective

      public void setPriceFreezeEffective(Date priceFreezeEffective)
      Sets the price freeze effective date of this subscription.
      Parameters:
      priceFreezeEffective - The price freeze effective date of the subscription
      See Also:
    • getPriceFreezeExpiration

      public Date getPriceFreezeExpiration()
      Returns the price freeze expiration date of this subscription.
      Returns:
      This subscription price freeze expiration date
      See Also:
    • setPriceFreezeExpiration

      public void setPriceFreezeExpiration(Date priceFreezeExpiration)
      Sets the price freeze expiration date of this subscription.
      Parameters:
      priceFreezeExpiration - The priceFreeze expiration date of the subscription
      See Also:
    • getCommitmentExpiration

      public Date getCommitmentExpiration()
      Returns the commitment expiration date of this subscription.
      Returns:
      This subscription commitment expiration date
      See Also:
    • setCommitmentExpiration

      public void setCommitmentExpiration(Date commitmentExpiration)
      Sets the commitment expiration date of this subscription.
      Parameters:
      commitmentExpiration - The commitmentExpiration date of the subscription
      See Also:
    • getSuspensionDate

      public Date getSuspensionDate()
      Returns the suspension date of this subscription.
      Returns:
      This subscription suspension date
      See Also:
    • setSuspensionDate

      public void setSuspensionDate(Date suspensionDate)
      Sets the suspension date of this subscription.
      Parameters:
      suspensionDate - The suspension date of the subscription
      See Also:
    • getResumptionDate

      public Date getResumptionDate()
      Returns the resumption date of this subscription.
      Returns:
      This subscription resumption date
      See Also:
    • setResumptionDate

      public void setResumptionDate(Date resumptionDate)
      Sets the resumption date of this subscription.
      Parameters:
      resumptionDate - The resumption date of the subscription
      See Also:
    • getCancellationDate

      public Date getCancellationDate()
      Returns the cancellation date of this subscription.
      Returns:
      This subscription cancellation date
      See Also:
    • setCancellationDate

      public void setCancellationDate(Date cancellationDate)
      Sets the cancellation date of this subscription.
      Parameters:
      cancellationDate - he cancellation date of the subscription
      See Also:
    • isOverrideDependencies

      public boolean isOverrideDependencies()
      Returns whether the subscription overrides the charge dependencies of the offer.
      Returns:
      true if the subscription overrides the charge dependencies of the offer, false otherwise
    • setOverrideDependencies

      public void setOverrideDependencies(boolean override)
      Sets whether the subscription overrides the charge dependencies of the offer.
      Parameters:
      override - true if the subscription overrides the charge dependencies of the offer, false otherwise
    • getSubscriptions

      public Vector<SubscriptionModel> getSubscriptions()
      Returns the subscriptions.
      Returns:
      The subscriptions
    • getChargeActivations

      public Vector<ChargeActivationModel> getChargeActivations()
      Returns the list of ChargeActivationModel.
      Returns:
      The list of the associated charge activations
    • getAdditionalInfos

      public Vector<AdditionalInfoModel> getAdditionalInfos()
      Returns the list of AdditionalInfoModel.
      Returns:
      The list of the associated additional information items
    • getCounters

      public Vector<CounterModel> getCounters()
      Returns the list of CounterModel.
      Returns:
      The list of the associated counters
    • getContextChronology

      public ChronologyModel getContextChronology()
      Returns the offer context chronology of this subscription.
      Returns:
      All the subscription contexts in a chronology
    • setContext

      public void setContext(SubscriptionContextModel context)
      Sets the context of this subscription.
      Parameters:
      context - The context of this subscription
    • getContext

      public SubscriptionContextModel getContext()
      Returns the subscription context.
      Returns:
      The context of this subscription
    • setAttributes

      public void setAttributes(XMLAttributes atts)
      Description copied from interface: XMLMarshallable
      Sets the attributes of the XML representation of the element being processed.
      Specified by:
      setAttributes in interface XMLMarshallable
      Parameters:
      atts - The XML attributes of the current element
    • addChild

      public void addChild(String name, XMLMarshallable child)
      Description copied from interface: XMLMarshallable
      Adds a child to the object, the child representing the marshallable object which must be added to the element.
      Specified by:
      addChild in interface XMLMarshallable
      Parameters:
      name - The name of tag for the child
      child - The child to be added
    • addCharacterData

      public void addCharacterData(String cData)
      Description copied from interface: XMLMarshallable
      Adds character data to the content element.
      Specified by:
      addCharacterData in interface XMLMarshallable
      Parameters:
      cData - The character data to be added
    • marshal

      public void marshal(XMLOutputter output)
      Description copied from interface: XMLMarshallable
      Gives an XML representation of this object, including its children.
      Specified by:
      marshal in interface XMLMarshallable
      Parameters:
      output - The XML output to marshal the object into
    • removeSubscription

      public void removeSubscription(SubscriptionModel sub)
    • addSubscription

      public void addSubscription(SubscriptionModel sub)
    • addChargeActivation

      public void addChargeActivation(ChargeActivationModel activation)
    • addChargeActivation

      public void addChargeActivation(ChargeActivationModel activation, boolean generateSubCode)
    • retrieveAllCharges

      public Vector<ChargeActivationModel> retrieveAllCharges()
      Returns the charge activations of this subscription and all the charge activations of its sub-subcriptions.
      Returns:
      A list of charge activations
    • retrieveAllSubscriptions

      public Vector<SubscriptionModel> retrieveAllSubscriptions()
      Returns all the subscriptions which has this subscription as ancestor.
      Returns:
      A list of subscriptions
    • retrieveInvalidChargeSubCodes

      public Vector<ChargeActivationModel> retrieveInvalidChargeSubCodes()
      Returns all the invalid charge activation subcodes.
      Returns:
      A list of charge activations