-- Module Advice-of-Charge-Operations (Q.956.2:10/1995)
-- See also ITU-T Q.956.2 (10/1995)
-- See also the index of all ASN.1 assignments needed in this document

Advice-of-Charge-Operations {itu-t recommendation q 956 advice-of-charge(2)
  operations-and-errors(1)} DEFINITIONS IMPLICIT TAGS ::=
BEGIN

EXPORTS
  chargingRequest, aOCSCurrency, aOCSSpecialArr, aOCDCurrency,
    aOCDChargingUnit, aOCECurrency, aOCEChargingUnit, noChargingInfoAvailable,
    identificationOfCharge;

IMPORTS
  OPERATION, ERROR
    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
      remote-operations(4) informationObjects(5) version1(0)}
  userNotSubscribed, notAvailable, invalidCallState,
    supplementaryServiceInteractionNotAllowed
    FROM General-Error-List {itu-t recommendation q 950 general-error-list(1)}
  PartyNumber
    FROM Addressing-Data-Elements {itu-t recommendation q 932
      addressing-data-elements(7)};

chargingRequest OPERATION ::= {
  ARGUMENT  ChargingCase
  RESULT
    CHOICE {aOCSCurrencyInfoList  AOCSCurrencyInfoList,
            aOCSSpecialArrInfo    AOCSSpecialArrInfo,
            chargingInfoFollows   NULL}
  ERRORS
    {userNotSubscribed | notAvailable | invalidCallState |
      noChargingInfoAvailable}
  CODE      local:30
}

aOCSCurrency OPERATION ::= { --  AOC-S given in currency units
  ARGUMENT
    CHOICE {chargeNotAvailable    NULL,
            aOCSCurrencyInfoList  AOCSCurrencyInfoList}
  CODE      local:31
}

aOCSSpecialArr OPERATION ::= { --  AOC-S for special charging arrangement
  ARGUMENT
    CHOICE {chargeNotAvailable  NULL,
            aOCSSpecialArrInfo  AOCSSpecialArrInfo}
  CODE      local:32
}

aOCDCurrency OPERATION ::= { --  AOC-D given in currency units
  ARGUMENT
    CHOICE {chargeNotAvailable  NULL,
            aOCDCurrencyInfo    AOCDCurrencyInfo}
  CODE      local:33
}

aOCDChargingUnit OPERATION ::= { --  AOC-D given in charging units
  ARGUMENT
    CHOICE {chargeNotAvailable    NULL,
            aOCDChargingUnitInfo  AOCDChargingUnitInfo}
  CODE      local:34
}

aOCECurrency OPERATION ::= { --  AOC-E given in currency units
  ARGUMENT
    CHOICE {chargeNotAvailable  NULL,
            aOCECurrencyInfo    AOCECurrencyInfo}
  CODE      local:35
}

aOCEChargingUnit OPERATION ::= { --  AOC-E given in charging units
  ARGUMENT
    CHOICE {chargeNotAvailable    NULL,
            aOCEChargingUnitInfo  AOCEChargingUnitInfo}
  CODE      local:36
}

identificationOfCharge OPERATION ::= {
  ARGUMENT  ChargingAssociation
  ERRORS
    {userNotSubscribed | notAvailable |
      supplementaryServiceInteractionNotAllowed}
  CODE      local:37
}

ChargingCase ::= ENUMERATED {
  chargingInformationAtCallSetup(0), chargingDuringACall(1),
  chargingAtTheEndOfACall(2)}

AOCSCurrencyInfoList ::= SEQUENCE SIZE (1..10) OF AOCSCurrencyInfo

AOCSCurrencyInfo ::= SEQUENCE {
  chargedItem       ChargedItem,
  aOCSCurrencyInfo
    CHOICE {specificCurrency
              CHOICE {durationCurrency    [1]  DurationCurrency,
                      flatRateCurrency    [2]  FlatRateCurrency,
                      volumeRateCurrency  [3]  VolumeRateCurrency},
            specialChargingCode       SpecialChargingCode,
            freeOfCharge              [4]  NULL,
            currencyInfoNotAvailable  [5]  NULL}
}

AOCSSpecialArrInfo ::= INTEGER(1..10)

ChargedItem ::= ENUMERATED {
  basicCommunication(0), callAttempt(1), callSetup(2), userToUserInfo(3),
  operationOfSupplementaryServ(4)}

DurationCurrency ::= SEQUENCE {
  dCurrency      [1]  Currency,
  dAmount        [2]  Amount,
  dChargingType  [3]  ChargingType,
  dTime          [4]  Time,
  dGranularity   [5]  Time OPTIONAL
}

FlatRateCurrency ::= SEQUENCE {
  fRCurrency  [1]  Currency,
  fRAmount    [2]  Amount
}

VolumeRateCurrency ::= SEQUENCE {
  vRCurrency    [1]  Currency,
  vRAmount      [2]  Amount,
  vRVolumeUnit  [3]  VolumeUnit
}

SpecialChargingCode ::= INTEGER(1..10)

AOCDCurrencyInfo ::= CHOICE {
  specificCurrency
    SEQUENCE {recordedCurrency    [1]  RecordedCurrency,
              typeOfChargingInfo  [2]  TypeOfChargingInfo,
              aOCDBillingId       [3]  AOCDBillingId OPTIONAL},
  freeOfCharge      [1]  NULL
}

AOCDChargingUnitInfo ::= CHOICE {
  specificChargingUnits
    SEQUENCE {recordedUnitsList   [1]  RecordedUnitsList,
              typeOfChargingInfo  [2]  TypeOfChargingInfo,
              aOCDBillingId       [3]  AOCDBillingId OPTIONAL},
  freeOfCharge           [1]  NULL
}

RecordedCurrency ::= SEQUENCE {rCurrency  [1]  Currency,
                               rAmount    [2]  Amount
}

RecordedUnitsList ::= SEQUENCE SIZE (1..32) OF RecordedUnits

TypeOfChargingInfo ::= ENUMERATED {subTotal(0), total(1)}

RecordedUnits ::= SEQUENCE {
  recordedUnits
    CHOICE {recordedNumberOfUnits  NumberOfUnits,
            notAvailable           NULL},
  recordedTypeOfUnits  TypeOfUnit OPTIONAL
}

AOCDBillingId ::= ENUMERATED {
  normalCharging(0), reverseCharging(1), creditCardCharging(2)}

AOCECurrencyInfo ::= SEQUENCE {
  currencyInfo
    CHOICE {specificCurrency
              SEQUENCE {recordedCurrency  [1]  RecordedCurrency,
                        aOCEBillingId     [2]  AOCEBillingId OPTIONAL
            },
            freeOfCharge      [1]  NULL},
  chargingAssociation  ChargingAssociation OPTIONAL
}

AOCEChargingUnitInfo ::= SEQUENCE {
  unitInfo
    CHOICE {specificChargingUnits
              SEQUENCE {recordedUnitsList  [1]  RecordedUnitsList,
                        aOCEBillingId      [2]  AOCEBillingId OPTIONAL
            },
            freeOfCharge           [1]  NULL},
  chargingAssociation  ChargingAssociation OPTIONAL
}

AOCEBillingId ::= ENUMERATED {
  normalCharging(0), reverseCharging(1), creditCardCharging(2),
  callForwardingUnconditional(3), callForwardingBusy(4),
  callForwardingNoReply(5), callDeflection(6), callTransfer(7)}

ChargingAssociation ::= CHOICE {
  chargedNumber     [0] EXPLICIT PartyNumber,
  chargeIdentifier  ChargeIdentifier
}

ChargeIdentifier ::= INTEGER(0..16777215)

Currency ::= IA5String(SIZE (1..10))

Amount ::= SEQUENCE {
  currencyAmount  [1]  CurrencyAmount,
  multiplier      [2]  Multiplier
}

CurrencyAmount ::= INTEGER(0..16777215)

Multiplier ::= ENUMERATED {
  oneThousandth(0), oneHundredth(1), oneTenth(2), one(3), ten(4), hundred(5),
  thousand(6)}

Time ::= SEQUENCE {
  lengthOfTimeUnit  [1]  LengthOfTimeUnit,
  scale             [2]  Scale
}

LengthOfTimeUnit ::= INTEGER(0..16777215)

Scale ::= ENUMERATED {
  oneHundrethSecond(0), oneTenthSecond(1), oneSecond(2), tenSeconds(3),
  oneMinute(4), oneHour(5), twentyFourHours(6)}

VolumeUnit ::= ENUMERATED {octet(0), segment(1), message(2)}

TypeOfUnit ::= INTEGER(1..16)

NumberOfUnits ::= INTEGER(0..16777215)

ChargingType ::= ENUMERATED {continuousCharging(0), stepFunction(1)}

noChargingInfoAvailable ERROR ::= {CODE  local:26
}

END --  of Advice of Charge operations
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D