start of tap3_12_export to generate GSM TAP3.12 tap-out file for partners, RT#20768
[freeside.git] / FS / FS / cdr / gsm_tap3_12.pm
1 package FS::cdr::gsm_tap3_12;
2 use base qw( FS::cdr );
3
4 use strict;
5 use vars qw( %info );
6 use Time::Local;
7 use Data::Dumper;
8
9 %info = (
10   'name'          => 'GSM TAP3 release 12',
11   'weight'        => 50,
12   'type'          => 'asn.1',
13   'import_fields' => [],
14   'asn_format'    => {
15     'spec'     => _asn_spec(),
16     'macro'    => 'TransferBatch', #XXX & skip the Notification ones?
17     'arrayref' => sub { shift->{'callEventDetails'}; },
18     'map'      => {
19                     'startdate'          => sub { my $callinfo = shift->{mobileOriginatedCall}{basicCallInformation};
20                                                   my $timestamp = $callinfo->{callEventStartTimeStamp};
21                                                   my $localTimeStamp = $timestamp->{localTimeStamp};
22                                                   my $utcTimeOffsetCode = $timestamp->{utcTimeOffsetCode}; #XXX not handled, utcTimeOffsetInfo in header
23                                                   $localTimeStamp =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ or die "unparsable timestamp: $localTimeStamp\n"; #. Dumper($callinfo);
24                                                   my($year, $mon, $day, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6);
25                                                   timelocal($sec, $min, $hour, $day, $mon-1, $year);
26                                                 },
27                     'duration'           => sub { shift->{mobileOriginatedCall}{basicCallInformation}{totalCallEventDuration} },
28                     'billsec'            => sub { shift->{mobileOriginatedCall}{basicCallInformation}{totalCallEventDuration} }, #same..
29                     'src'                => sub { shift->{mobileOriginatedCall}{basicCallInformation}{chargeableSubscriber}{simChargeableSubscriber}{msisdn} },
30                     'charged_party_imsi' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{chargeableSubscriber}{simChargeableSubscriber}{imsi} },
31                     'dst'                => sub { shift->{mobileOriginatedCall}{basicCallInformation}{destination}{calledNumber} }, #dialledDigits?
32                     'carrierid'          => sub { shift->{mobileOriginatedCall}{locationInformation}{networkLocation}{recEntityCode} },
33                     'userfield'          => sub { shift->{mobileOriginatedCall}{operatorSpecInformation}[0] },
34                     'servicecode'        => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{basicService}{serviceCode}{teleServiceCode} },
35                     'upstream_price'     => sub { sprintf('%.5f', shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[0]{charge} / 100000 ) }, #XXX numberOfDecimalPlaces in header
36                     'calltypenum'        => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{callTypeGroup}{callTypelevel1} },
37                     'quantity'           => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargedUnits} },
38                     'quantity_able'      => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeableUnits} },
39                   },
40   },
41 );
42
43 #accepts qsearch parameters as a hash or list of name/value pairs, but not
44 #old-style qsearch('cdr', { field=>'value' })
45
46 use Date::Format;
47 sub tap3_12_export {
48   my %qsearch = ();
49   if ( ref($_[0]) eq 'HASH' ) {
50     %qsearch = %{ $_[0] };
51   } else {
52     %qsearch = @_;
53   }
54
55   #if these get huge we might need to get a count and do a paged search
56   my @cdrs = qsearch({ 'table'=>'cdr', %qsearch, 'order_by'=>'calldate ASC' });
57
58   eval "use Convert::ASN1";
59   die $@ if $@;
60
61   my $asn = Convert::ASN1->new;
62   $asn->prepare( _asn_spec() ) or die $asn->error;
63
64   my $TransferBatch = $asn->find('TransferBatch') or die $asn->error;
65
66   my %hash = _TransferBatch(); #static information etc.
67
68   my $utcTimeOffset = '+0300'; #XXX local timezone at least
69
70   my $now = time;
71
72   ###
73   # accountingInfo
74   ###
75
76   ###
77   # batchControlInfo
78   ###
79
80   $hash{batchControlInfo}->{fileCreationTimeStamp}   = { 'localTimeStamp' => time2str('%Y%m%d%H%M%S', $now),
81                                                          'utcTimeOffset'  => $utcTimeOffset,
82                                                        };
83   #XXX what do these do?  do they need to be different from fileCreationTimeStamp?
84   $hash{batchControlInfo}->{transferCutOffTimeStamp} = { 'localTimeStamp' => time2str('%Y%m%d%H%M%S', $now),
85                                                          'utcTimeOffset'  => $utcTimeOffset,
86                                                        };
87
88   $hash{batchControlInfo}->{fileAvailableTimeStamp}  = { 'localTimeStamp' => time2str('%Y%m%d%H%M%S', $now),
89                                                           'utcTimeOffset'  => $utcTimeOffset,
90                                                         };
91
92   #XXX
93   $hash{batchControlInfo}->{sender} = 'MDGTM';
94   $hash{batchControlInfo}->{recipient} = 'GNQHT';
95   $hash{batchControlInfo}->{fileSequenceNumber} = '00178'; #XXX global?  per recipient?
96
97   ###
98   # networkInfo
99   ###
100
101   $hash{networkInfo}->{utcTimeOffsetInfo}[0]{utcTimeOffset} = $utcTimeOffset;
102
103   #XXX receiver entity IDs?  why two?
104   #$hash->{networkInfo}->{recEntityInfo}[0]{recEntityId} = '340010100';
105   #$hash->{networkInfo}->{recEntityInfo}[1]{recEntityId} = '240556000000';
106
107   ###
108   # auditControlInfo
109   ###
110
111   $hash{auditControlInfo}->{callEventDetailsCount} = scalar(@cdrs);
112   $hash{auditControlInfo}->{earliestCallTimeStamp} = { 'localTimeStamp' => time2str('%Y%m%d%H%M%S', $cdrs[0]->calldate_unix),
113                                                        'utcTimeOffset'  => $utcTimeOffset,
114                                                      };
115   $hash{auditControlInfo}->{latestCallTimeStamp}   = { 'localTimeStamp' => time2str('%Y%m%d%H%M%S', $cdrs[-1]->calldate_unix),
116                                                        'utcTimeOffset'  => $utcTimeOffset,
117                                                      };
118
119   my $totalCharge = 0;
120   $totalCharge += $_->rated_price foreach @cdrs;
121   $hash{totalCharge} = sprintf('%.5f', $totalCharge);
122
123   ###
124   # callEventDetails
125   ###
126
127   $hash{callEventDetails} = [
128     map {
129           {
130             'mobileOriginatedCall' => {
131               'locationInformation' => {
132                                          'networkLocation' => {
133                                                                 'recEntityCode' => $_->carrierid, #XXX 1
134                                                               }
135                                        },
136               'operatorSpecInformation' => [
137                                              $_->userfield, ##'|Seq: 178 Loc: 1|'
138                                            ],
139               'basicServiceUsedList' => [
140                                           {
141                                             'basicService' => {
142                                                                 'serviceCode' => {
143                                                                                    'teleServiceCode' => $_->servicecode, #'11'
144                                                                                  }
145                                                               },
146                                             'chargeInformationList' => [
147                                                                          {
148                                                                            'callTypeGroup' => {
149                                                                                                 'callTypeLevel1' => $_->calltypenum,
150                                                                                                 'callTypeLevel3' => 0,
151                                                                                                 'callTypeLevel2' => 0
152                                                                                               },
153                                                                            'chargeDetailList' => [
154                                                                                                    {
155                                                                                                      'charge'          => $_->rated_price * 100000, #XXX numberOfDecimalPlaces 
156                                                                                                      'chargeType'      => '00',
157                                                                                                      'chargeableUnits' => $_->quantity_able,
158                                                                                                      'chargedUnits'    => $_->quantity,
159                                                                                                    }
160                                                                                                  ],
161                                                                            'chargedItem' => 'D', #XXX or E?  what's this do?
162                                                                            'exchangeRateCode' => 1
163                                                                          }
164                                                                        ]
165                                           }
166                                         ],
167               'basicCallInformation' => {
168                                           'totalCallEventDuration' => $_->duration,
169                                           'destination' => {
170                                                              'calledNumber' => $_->dst,
171                                                              #XXX 'dialledDigits' => '322221350'
172                                                            },
173                                           'callEventStartTimeStamp' => {
174                                                                          'localTimeStamp' => time2str('%Y%m%d%H%M%S', $_->startdate),
175                                                                          'utcTimeOffsetCode' => 1
176                                                                        },
177                                           'chargeableSubscriber' => {
178                                                                       'simChargeableSubscriber' => {
179                                                                                                      'msisdn' => $_->charged_pary, #src
180                                                                                                      'imsi'   => $_->charged_party_imsi,
181                                                                                                    }
182                                                                     }
183                                         }
184             }
185           };
186         }
187       @cdrs
188   ];
189
190
191   ###
192
193
194   my $pdu = $TransferBatch->encode( \%hash );
195
196   return $pdu;
197
198 }
199
200 sub _TransferBatch {
201           'accountingInfo' => {
202                                 'currencyConversionInfo' => [
203                                                               {
204                                                                 'numberOfDecimalPlaces' => 5,
205                                                                 'exchangeRate' => 152549, #???
206                                                                 'exchangeRateCode' => 1
207                                                               }
208                                                             ],
209                                 'tapDecimalPlaces' => 5,
210                                 'localCurrency' => 'USD'
211                               },
212           'batchControlInfo' => {
213                                   'specificationVersionNumber' => 3,
214                                   'releaseVersionNumber' => 12, #11?
215                                   #'transferCutOffTimeStamp' => {
216                                   #                               'localTimeStamp' => '20121230050222',
217                                   #                               'utcTimeOffset' => '+0300'
218                                   #                             },
219                                   'operatorSpecInformation' => [
220                                                                  '', # XXX '|File proc MTH LUXMA: 1285348027|'
221                                                                ],
222                                   #'recipient' => 'GNQHT',
223                                   #'fileCreationTimeStamp' => {
224                                   #                             'localTimeStamp' => '20121230050222',
225                                   #                             'utcTimeOffset' => '+0300'
226                                   #                           },
227                                   #'sender' => 'MDGTM',
228                                   #'fileSequenceNumber' => '00178',
229                                   #'fileAvailableTimeStamp' => {
230                                   #                              'localTimeStamp' => '20121230035052',
231                                   #                              'utcTimeOffset' => '+0100'
232                                   #                            }
233                                 },
234           'networkInfo' => {
235                              'recEntityInfo' => [
236                                                   {
237                                                     'recEntityType' => 1,
238                                                     #'recEntityId' => '340010100',
239                                                     'recEntityCode' => 1
240                                                   },
241                                                   {
242                                                     'recEntityType' => 2,
243                                                     #'recEntityId' => '240556000000',
244                                                     'recEntityCode' => 2
245                                                   }
246                                                 ],
247                              'utcTimeOffsetInfo' => [
248                                                       {
249                                                         'utcTimeOffset' => '+0300',
250                                                         'utcTimeOffsetCode' => 1
251                                                       }
252                                                     ]
253                            },
254           'auditControlInfo' => {
255                                   #'callEventDetailsCount' => 4,
256                                   'totalTaxValue' => 0,
257                                   #'earliestCallTimeStamp' => {
258                                   #                             'localTimeStamp' => '20121229102501',
259                                   #                             'utcTimeOffset' => '+0300'
260                                   #                           },
261                                   'totalDiscountValue' => 0,
262                                   #'totalCharge' => 50474,
263                                   #'latestCallTimeStamp' => {
264                                   #                           'localTimeStamp' => '20121229102807',
265                                   #                           'utcTimeOffset' => '+0300'
266                                   #                         }
267                                 },
268 }
269
270 sub _asn_spec {
271   <<'END';
272 --
273 --
274 -- The following ASN.1 specification defines the abstract syntax for 
275 --
276 --        Data Record Format Version 03 
277 --                           Release 12
278 --
279 -- The specification is structured as follows:
280 --   (1) structure of the Tap batch
281 --   (2) definition of the individual Tap ‘records’ 
282 --   (3) Tap data items and groups of data items used within (2)
283 --   (4) Common, non-Tap data types
284 --   (5) Tap data items for content charging
285 --
286 -- It is mainly a translation from the logical structure
287 -- diagrams. Where appropriate, names used within the 
288 -- logical structure diagrams have been shortened.
289 -- For repeating data items the name as used within the logical
290 -- structure have been extended by adding ‘list’ or ‘table’
291 -- (in some instances).
292 --
293
294
295 -- TAP-0312  DEFINITIONS IMPLICIT TAGS  ::= 
296
297 -- BEGIN 
298
299 --
300 -- Structure of a Tap batch 
301 --
302
303 DataInterChange ::= CHOICE 
304 {
305     transferBatch TransferBatch, 
306     notification  Notification,
307 ...
308 }
309
310 -- Batch Control Information must always, both logically and physically,
311 -- be the first group/item within Transfer Batch – this ensures that the
312 -- TAP release version can be readily identified.  Any new groups/items
313 -- required may be inserted at any point after Batch Control Information
314
315 TransferBatch ::= [APPLICATION 1] SEQUENCE
316 {
317     batchControlInfo       BatchControlInfo            OPTIONAL, -- *m.m.
318     accountingInfo         AccountingInfo              OPTIONAL,
319     networkInfo            NetworkInfo                 OPTIONAL, -- *m.m.
320     messageDescriptionInfo MessageDescriptionInfoList  OPTIONAL,
321     callEventDetails       CallEventDetailList         OPTIONAL, -- *m.m.
322     auditControlInfo       AuditControlInfo            OPTIONAL, -- *m.m.
323 ...
324 }
325
326 Notification ::= [APPLICATION 2] SEQUENCE
327 {
328     sender                     Sender                     OPTIONAL, -- *m.m.
329     recipient                    Recipient                  OPTIONAL, -- *m.m.
330     fileSequenceNumber           FileSequenceNumber         OPTIONAL, -- *m.m.
331     rapFileSequenceNumber        RapFileSequenceNumber      OPTIONAL,
332     fileCreationTimeStamp        FileCreationTimeStamp      OPTIONAL,
333     fileAvailableTimeStamp       FileAvailableTimeStamp     OPTIONAL, -- *m.m.
334     transferCutOffTimeStamp      TransferCutOffTimeStamp    OPTIONAL, -- *m.m.
335     specificationVersionNumber SpecificationVersionNumber OPTIONAL, -- *m.m.
336     releaseVersionNumber         ReleaseVersionNumber       OPTIONAL, -- *m.m.
337     fileTypeIndicator            FileTypeIndicator          OPTIONAL,
338     operatorSpecInformation      OperatorSpecInfoList       OPTIONAL,
339 ...
340 }
341
342 CallEventDetailList ::=  [APPLICATION 3] SEQUENCE OF CallEventDetail
343
344 CallEventDetail ::= CHOICE
345 {
346     mobileOriginatedCall   MobileOriginatedCall,
347     mobileTerminatedCall   MobileTerminatedCall,
348     supplServiceEvent      SupplServiceEvent,
349     serviceCentreUsage     ServiceCentreUsage,
350     gprsCall               GprsCall,
351     contentTransaction     ContentTransaction,
352     locationService        LocationService,
353     messagingEvent         MessagingEvent,
354     mobileSession          MobileSession,
355 ...
356 }
357
358 --
359 -- Structure of the individual Tap records
360 --
361
362 BatchControlInfo ::= [APPLICATION 4] SEQUENCE
363 {
364     sender                       Sender                         OPTIONAL, -- *m.m.
365     recipient                    Recipient                              OPTIONAL, -- *m.m.
366     fileSequenceNumber           FileSequenceNumber             OPTIONAL, -- *m.m.
367     fileCreationTimeStamp        FileCreationTimeStamp          OPTIONAL,
368     transferCutOffTimeStamp      TransferCutOffTimeStamp        OPTIONAL, -- *m.m.
369     fileAvailableTimeStamp       FileAvailableTimeStamp         OPTIONAL, -- *m.m.
370     specificationVersionNumber SpecificationVersionNumber       OPTIONAL, -- *m.m.
371     releaseVersionNumber         ReleaseVersionNumber           OPTIONAL, -- *m.m.
372     fileTypeIndicator            FileTypeIndicator              OPTIONAL,
373     rapFileSequenceNumber        RapFileSequenceNumber          OPTIONAL,
374     operatorSpecInformation      OperatorSpecInfoList           OPTIONAL,
375 ...
376 }
377
378 AccountingInfo ::= [APPLICATION 5] SEQUENCE
379 {
380     taxation                  TaxationList           OPTIONAL,
381     discounting               DiscountingList        OPTIONAL,
382     localCurrency             LocalCurrency          OPTIONAL, -- *m.m.
383     tapCurrency               TapCurrency            OPTIONAL,
384     currencyConversionInfo    CurrencyConversionList OPTIONAL,
385     tapDecimalPlaces          TapDecimalPlaces       OPTIONAL, -- *m.m.
386 ...
387 }
388
389 NetworkInfo ::= [APPLICATION 6] SEQUENCE
390 {
391     utcTimeOffsetInfo         UtcTimeOffsetInfoList OPTIONAL, -- *m.m.
392     recEntityInfo             RecEntityInfoList     OPTIONAL,
393 ...
394 }
395
396 MessageDescriptionInfoList ::= [APPLICATION 8] SEQUENCE OF MessageDescriptionInformation
397
398 MobileOriginatedCall ::= [APPLICATION 9] SEQUENCE
399 {
400     basicCallInformation    MoBasicCallInformation    OPTIONAL, -- *m.m.
401     locationInformation     LocationInformation       OPTIONAL, -- *m.m.
402     equipmentIdentifier     ImeiOrEsn                 OPTIONAL,
403     basicServiceUsedList    BasicServiceUsedList      OPTIONAL, -- *m.m.
404     supplServiceCode        SupplServiceCode          OPTIONAL,
405     thirdPartyInformation   ThirdPartyInformation     OPTIONAL,
406     camelServiceUsed        CamelServiceUsed          OPTIONAL,
407     operatorSpecInformation OperatorSpecInfoList      OPTIONAL,
408 ...
409 }    
410
411 MobileTerminatedCall ::= [APPLICATION 10] SEQUENCE
412 {
413     basicCallInformation    MtBasicCallInformation    OPTIONAL, -- *m.m.
414     locationInformation     LocationInformation       OPTIONAL, -- *m.m.
415     equipmentIdentifier     ImeiOrEsn                 OPTIONAL,
416     basicServiceUsedList    BasicServiceUsedList      OPTIONAL, -- *m.m.
417     camelServiceUsed        CamelServiceUsed          OPTIONAL,
418     operatorSpecInformation OperatorSpecInfoList      OPTIONAL,
419 ...
420 }    
421
422
423 SupplServiceEvent ::= [APPLICATION 11] SEQUENCE
424 {
425     chargeableSubscriber      ChargeableSubscriber    OPTIONAL, -- *m.m.
426     rapFileSequenceNumber     RapFileSequenceNumber   OPTIONAL,
427     locationInformation       LocationInformation     OPTIONAL, -- *m.m.
428     equipmentIdentifier       ImeiOrEsn               OPTIONAL,
429     supplServiceUsed          SupplServiceUsed        OPTIONAL, -- *m.m.
430     operatorSpecInformation   OperatorSpecInfoList    OPTIONAL,
431 ...
432 }
433
434
435 ServiceCentreUsage ::= [APPLICATION 12] SEQUENCE
436 {
437     basicInformation          ScuBasicInformation     OPTIONAL, -- *m.m.
438     rapFileSequenceNumber     RapFileSequenceNumber   OPTIONAL,
439     servingNetwork            ServingNetwork          OPTIONAL,
440     recEntityCode             RecEntityCode           OPTIONAL, -- *m.m.
441     chargeInformation         ChargeInformation       OPTIONAL, -- *m.m.
442     scuChargeType             ScuChargeType           OPTIONAL, -- *m.m.
443     scuTimeStamps             ScuTimeStamps           OPTIONAL, -- *m.m.
444     operatorSpecInformation   OperatorSpecInfoList    OPTIONAL,
445 ...
446 }
447
448 GprsCall ::= [APPLICATION 14] SEQUENCE
449 {
450     gprsBasicCallInformation  GprsBasicCallInformation  OPTIONAL, -- *m.m.
451     gprsLocationInformation   GprsLocationInformation   OPTIONAL, -- *m.m.
452     equipmentIdentifier       ImeiOrEsn                 OPTIONAL,
453     gprsServiceUsed           GprsServiceUsed           OPTIONAL, -- *m.m.
454     camelServiceUsed          CamelServiceUsed          OPTIONAL,
455     operatorSpecInformation   OperatorSpecInfoList      OPTIONAL,
456 ...
457 }
458
459 ContentTransaction ::= [APPLICATION 17] SEQUENCE
460 {
461  contentTransactionBasicInfo ContentTransactionBasicInfo OPTIONAL, -- *m.m.
462  chargedPartyInformation     ChargedPartyInformation     OPTIONAL, -- *m.m.
463  servingPartiesInformation   ServingPartiesInformation   OPTIONAL, -- *m.m.
464  contentServiceUsed          ContentServiceUsedList      OPTIONAL, -- *m.m.
465  operatorSpecInformation     OperatorSpecInfoList        OPTIONAL,
466 ...
467 }
468
469 LocationService ::= [APPLICATION 297] SEQUENCE
470 {
471     rapFileSequenceNumber         RapFileSequenceNumber       OPTIONAL,
472     recEntityCode                         RecEntityCode               OPTIONAL, -- *m.m.
473     callReference                         CallReference               OPTIONAL,
474     trackingCustomerInformation TrackingCustomerInformation OPTIONAL,
475     lCSSPInformation              LCSSPInformation            OPTIONAL,
476     trackedCustomerInformation  TrackedCustomerInformation  OPTIONAL,
477     locationServiceUsage          LocationServiceUsage        OPTIONAL, -- *m.m.
478     operatorSpecInformation       OperatorSpecInfoList        OPTIONAL,
479 ...
480 }
481
482 MessagingEvent ::= [APPLICATION 433] SEQUENCE
483 {
484     messagingEventService       MessagingEventService     OPTIONAL, -- *m.m.
485     chargedParty              ChargedParty              OPTIONAL, -- *m.m.
486     rapFileSequenceNumber       RapFileSequenceNumber     OPTIONAL,
487     simToolkitIndicator         SimToolkitIndicator       OPTIONAL,
488     geographicalLocation        GeographicalLocation      OPTIONAL,
489     eventReference            EventReference              OPTIONAL, -- *m.m.
490
491     recEntityCodeList           RecEntityCodeList         OPTIONAL, -- *m.m.  
492     networkElementList          NetworkElementList        OPTIONAL,
493     locationArea              LocationArea                OPTIONAL,
494     cellId                      CellId                            OPTIONAL,    
495     serviceStartTimestamp       ServiceStartTimestamp     OPTIONAL, -- *m.m.
496     nonChargedParty             NonChargedParty           OPTIONAL,
497     exchangeRateCode            ExchangeRateCode                  OPTIONAL,
498     callTypeGroup                       CallTypeGroup             OPTIONAL, -- *m.m.
499     charge                              Charge                    OPTIONAL, -- *m.m.
500     taxInformationList          TaxInformationList        OPTIONAL,
501     operatorSpecInformation   OperatorSpecInfoList      OPTIONAL,
502 ...
503 }
504
505 MobileSession ::= [APPLICATION 434] SEQUENCE
506 {
507     mobileSessionService        MobileSessionService      OPTIONAL, -- *m.m.
508     chargedParty              ChargedParty              OPTIONAL, -- *m.m.
509     rapFileSequenceNumber       RapFileSequenceNumber     OPTIONAL,
510     simToolkitIndicator         SimToolkitIndicator       OPTIONAL,
511     geographicalLocation        GeographicalLocation      OPTIONAL,
512     locationArea              LocationArea                OPTIONAL,
513     cellId                      CellId                            OPTIONAL,
514     eventReference            EventReference              OPTIONAL, -- *m.m.
515
516     recEntityCodeList           RecEntityCodeList         OPTIONAL, -- *m.m.
517     serviceStartTimestamp       ServiceStartTimestamp     OPTIONAL, -- *m.m.
518     causeForTerm              CauseForTerm              OPTIONAL,
519     totalCallEventDuration      TotalCallEventDuration    OPTIONAL, -- *m.m.
520     nonChargedParty             NonChargedParty           OPTIONAL,
521     sessionChargeInfoList     SessionChargeInfoList     OPTIONAL, -- *m.m.
522     operatorSpecInformation   OperatorSpecInfoList      OPTIONAL,
523 ...
524 }
525
526 AuditControlInfo ::= [APPLICATION 15] SEQUENCE
527 {
528     earliestCallTimeStamp         EarliestCallTimeStamp       OPTIONAL,
529     latestCallTimeStamp           LatestCallTimeStamp         OPTIONAL,
530     totalCharge                   TotalCharge                 OPTIONAL, -- *m.m.
531     totalChargeRefund             TotalChargeRefund           OPTIONAL,
532     totalTaxRefund                TotalTaxRefund              OPTIONAL,
533     totalTaxValue                 TotalTaxValue               OPTIONAL, -- *m.m.
534     totalDiscountValue            TotalDiscountValue          OPTIONAL, -- *m.m.
535     totalDiscountRefund           TotalDiscountRefund         OPTIONAL,
536     totalAdvisedChargeValueList TotalAdvisedChargeValueList OPTIONAL,
537     callEventDetailsCount         CallEventDetailsCount       OPTIONAL, -- *m.m.
538     operatorSpecInformation       OperatorSpecInfoList        OPTIONAL,
539 ...
540 }
541
542
543 -- 
544 -- Tap data items and groups of data items
545 --
546
547 AccessPointNameNI ::= [APPLICATION 261] AsciiString --(SIZE(1..63))
548
549 AccessPointNameOI ::= [APPLICATION 262] AsciiString --(SIZE(1..37))
550
551 ActualDeliveryTimeStamp ::= [APPLICATION 302] DateTime
552
553 AddressStringDigits ::= BCDString
554
555 AdvisedCharge ::= [APPLICATION 349] Charge
556  
557 AdvisedChargeCurrency ::= [APPLICATION 348] Currency
558  
559 AdvisedChargeInformation ::= [APPLICATION 351] SEQUENCE
560 {
561     paidIndicator         PaidIndicator         OPTIONAL,
562     paymentMethod         PaymentMethod         OPTIONAL,
563     advisedChargeCurrency AdvisedChargeCurrency OPTIONAL,
564     advisedCharge         AdvisedCharge         OPTIONAL, -- *m.m.
565     commission            Commission            OPTIONAL,
566 ...
567 }
568  
569 AgeOfLocation ::= [APPLICATION 396] INTEGER
570
571 BasicService ::= [APPLICATION 36] SEQUENCE
572 {
573     serviceCode                 BasicServiceCode       OPTIONAL, -- *m.m.
574     transparencyIndicator       TransparencyIndicator  OPTIONAL,
575     fnur                        Fnur                   OPTIONAL,
576     userProtocolIndicator       UserProtocolIndicator  OPTIONAL,
577     guaranteedBitRate           GuaranteedBitRate      OPTIONAL,
578     maximumBitRate              MaximumBitRate         OPTIONAL,
579 ...
580 }
581
582 BasicServiceCode ::= [APPLICATION 426] CHOICE 
583 {
584     teleServiceCode      TeleServiceCode,
585     bearerServiceCode    BearerServiceCode,
586 ...
587 }
588
589 BasicServiceCodeList ::= [APPLICATION 37] SEQUENCE OF BasicServiceCode
590
591 BasicServiceUsed ::= [APPLICATION 39] SEQUENCE
592 {
593     basicService                BasicService          OPTIONAL, -- *m.m.
594     chargingTimeStamp           ChargingTimeStamp     OPTIONAL,
595     chargeInformationList       ChargeInformationList OPTIONAL, -- *m.m.
596     hSCSDIndicator              HSCSDIndicator        OPTIONAL,
597 ...
598 }
599
600 BasicServiceUsedList ::= [APPLICATION 38] SEQUENCE OF BasicServiceUsed
601
602 BearerServiceCode ::= [APPLICATION 40] HexString --(SIZE(2))
603
604 EventReference ::= [APPLICATION 435]  AsciiString
605
606
607 CalledNumber ::= [APPLICATION 407] AddressStringDigits
608
609 CalledPlace ::= [APPLICATION 42] AsciiString
610
611 CalledRegion ::= [APPLICATION 46] AsciiString
612
613 CallEventDetailsCount ::= [APPLICATION 43] INTEGER 
614
615 CallEventStartTimeStamp ::= [APPLICATION 44] DateTime
616
617 CallingNumber ::= [APPLICATION 405] AddressStringDigits
618
619 CallOriginator ::= [APPLICATION 41]  SEQUENCE
620 {
621     callingNumber               CallingNumber           OPTIONAL,
622     clirIndicator               ClirIndicator         OPTIONAL,
623     sMSOriginator               SMSOriginator         OPTIONAL,
624 ...
625 }
626
627 CallReference ::= [APPLICATION 45] OCTET STRING --(SIZE(1..8))
628
629 CallTypeGroup ::= [APPLICATION 258] SEQUENCE
630 {
631     callTypeLevel1      CallTypeLevel1           OPTIONAL, -- *m.m.
632     callTypeLevel2      CallTypeLevel2           OPTIONAL, -- *m.m.
633     callTypeLevel3      CallTypeLevel3           OPTIONAL, -- *m.m.
634 ...
635 }
636
637 CallTypeLevel1 ::= [APPLICATION 259] INTEGER
638
639 CallTypeLevel2 ::= [APPLICATION 255] INTEGER
640
641 CallTypeLevel3 ::= [APPLICATION 256] INTEGER
642
643 CamelDestinationNumber ::= [APPLICATION 404] AddressStringDigits
644
645 CamelInvocationFee ::= [APPLICATION 422] AbsoluteAmount
646
647 CamelServiceKey ::= [APPLICATION 55] INTEGER
648
649 CamelServiceLevel ::= [APPLICATION 56] INTEGER
650
651 CamelServiceUsed ::= [APPLICATION 57] SEQUENCE
652 {
653     camelServiceLevel         CamelServiceLevel                 OPTIONAL,
654     camelServiceKey           CamelServiceKey                   OPTIONAL, -- *m.m.
655     defaultCallHandling       DefaultCallHandlingIndicator      OPTIONAL,
656     exchangeRateCode          ExchangeRateCode                  OPTIONAL,
657     taxInformation            TaxInformationList                OPTIONAL,
658     discountInformation       DiscountInformation               OPTIONAL,
659     camelInvocationFee        CamelInvocationFee                OPTIONAL,
660     threeGcamelDestination    ThreeGcamelDestination            OPTIONAL,
661     cseInformation            CseInformation                    OPTIONAL,
662 ...
663 }
664
665 CauseForTerm ::= [APPLICATION 58] INTEGER
666
667 CellId ::= [APPLICATION 59] INTEGER 
668
669 Charge ::= [APPLICATION 62] AbsoluteAmount
670
671 ChargeableSubscriber ::= [APPLICATION 427] CHOICE 
672 {
673     simChargeableSubscriber SimChargeableSubscriber,
674     minChargeableSubscriber MinChargeableSubscriber,
675 ...
676 }
677
678 ChargeableUnits ::= [APPLICATION 65]  INTEGER
679
680 ChargeDetail ::= [APPLICATION 63] SEQUENCE
681 {
682     chargeType              ChargeType                  OPTIONAL, -- *m.m.
683     charge                  Charge                      OPTIONAL, -- *m.m.
684     chargeableUnits         ChargeableUnits             OPTIONAL,
685     chargedUnits            ChargedUnits                OPTIONAL,
686     chargeDetailTimeStamp   ChargeDetailTimeStamp       OPTIONAL,
687 ...
688 }
689
690 ChargeDetailList ::= [APPLICATION 64] SEQUENCE OF ChargeDetail
691
692 ChargeDetailTimeStamp ::= [APPLICATION 410] ChargingTimeStamp
693
694 ChargedItem ::= [APPLICATION 66]  AsciiString --(SIZE(1))
695
696 ChargedParty ::= [APPLICATION 436] SEQUENCE
697 {
698     imsi                        Imsi                            OPTIONAL, -- *m.m.
699     msisdn                              Msisdn                  OPTIONAL,         
700     publicUserId                        PublicUserId            OPTIONAL,
701     homeBid                             HomeBid                 OPTIONAL,
702     homeLocationDescription     HomeLocationDescription OPTIONAL,
703     imei                                Imei                            OPTIONAL,
704 ...
705 }
706
707 ChargedPartyEquipment ::= [APPLICATION 323] SEQUENCE
708 {
709     equipmentIdType EquipmentIdType OPTIONAL, -- *m.m.
710     equipmentId     EquipmentId     OPTIONAL, -- *m.m.
711 ...
712 }
713  
714 ChargedPartyHomeIdentification ::= [APPLICATION 313] SEQUENCE
715 {
716     homeIdType     HomeIdType     OPTIONAL, -- *m.m.
717     homeIdentifier HomeIdentifier OPTIONAL, -- *m.m.
718 ...
719 }
720
721 ChargedPartyHomeIdList ::= [APPLICATION 314] SEQUENCE OF
722                                              ChargedPartyHomeIdentification
723
724 ChargedPartyIdentification ::= [APPLICATION 309] SEQUENCE
725 {
726     chargedPartyIdType         ChargedPartyIdType         OPTIONAL, -- *m.m.
727     chargedPartyIdentifier     ChargedPartyIdentifier     OPTIONAL, -- *m.m.
728 ...
729 }
730
731 ChargedPartyIdentifier ::= [APPLICATION 287] AsciiString
732
733 ChargedPartyIdList ::= [APPLICATION 310] SEQUENCE OF ChargedPartyIdentification
734
735 ChargedPartyIdType ::= [APPLICATION 305] INTEGER
736
737 ChargedPartyInformation ::= [APPLICATION 324] SEQUENCE
738 {
739     chargedPartyIdList       ChargedPartyIdList        OPTIONAL, -- *m.m.
740     chargedPartyHomeIdList   ChargedPartyHomeIdList    OPTIONAL,
741     chargedPartyLocationList ChargedPartyLocationList  OPTIONAL,
742     chargedPartyEquipment    ChargedPartyEquipment     OPTIONAL,
743 ...
744 }
745  
746 ChargedPartyLocation ::= [APPLICATION 320] SEQUENCE
747 {
748     locationIdType     LocationIdType     OPTIONAL, -- *m.m.
749     locationIdentifier LocationIdentifier OPTIONAL, -- *m.m.
750 ...
751 }
752  
753 ChargedPartyLocationList ::= [APPLICATION 321] SEQUENCE OF ChargedPartyLocation
754  
755 ChargedPartyStatus ::= [APPLICATION 67] INTEGER 
756
757 ChargedUnits ::= [APPLICATION 68]  INTEGER 
758
759 ChargeInformation ::= [APPLICATION 69] SEQUENCE
760 {
761     chargedItem         ChargedItem         OPTIONAL, -- *m.m.
762     exchangeRateCode    ExchangeRateCode    OPTIONAL,
763     callTypeGroup       CallTypeGroup       OPTIONAL,
764     chargeDetailList    ChargeDetailList    OPTIONAL, -- *m.m.
765     taxInformation      TaxInformationList  OPTIONAL,
766     discountInformation DiscountInformation OPTIONAL,
767 ...
768 }
769
770 ChargeInformationList ::= [APPLICATION 70] SEQUENCE OF ChargeInformation
771
772 ChargeRefundIndicator ::= [APPLICATION 344] INTEGER
773  
774 ChargeType ::= [APPLICATION 71] NumberString --(SIZE(2..3))
775
776 ChargingId ::= [APPLICATION 72] INTEGER
777
778 ChargingPoint ::= [APPLICATION 73]  AsciiString --(SIZE(1))
779
780 ChargingTimeStamp ::= [APPLICATION 74]  DateTime
781
782 ClirIndicator ::= [APPLICATION 75] INTEGER
783
784 Commission ::= [APPLICATION 350] Charge
785  
786 CompletionTimeStamp ::= [APPLICATION 76] DateTime
787
788 ContentChargingPoint ::= [APPLICATION 345] INTEGER
789  
790 ContentProvider ::= [APPLICATION 327] SEQUENCE
791 {
792     contentProviderIdType     ContentProviderIdType     OPTIONAL, -- *m.m.
793     contentProviderIdentifier ContentProviderIdentifier OPTIONAL, -- *m.m.
794 ...
795 }
796  
797 ContentProviderIdentifier ::= [APPLICATION 292] AsciiString
798
799 ContentProviderIdList ::= [APPLICATION 328] SEQUENCE OF ContentProvider
800
801 ContentProviderIdType ::= [APPLICATION 291] INTEGER
802
803 ContentProviderName ::= [APPLICATION 334] AsciiString
804  
805 ContentServiceUsed ::= [APPLICATION 352] SEQUENCE
806 {
807     contentTransactionCode       ContentTransactionCode       OPTIONAL, -- *m.m.
808     contentTransactionType       ContentTransactionType       OPTIONAL, -- *m.m.
809     objectType                   ObjectType                   OPTIONAL,
810     transactionDescriptionSupp   TransactionDescriptionSupp   OPTIONAL,
811     transactionShortDescription  TransactionShortDescription  OPTIONAL, -- *m.m.
812     transactionDetailDescription TransactionDetailDescription OPTIONAL,
813     transactionIdentifier          TransactionIdentifier        OPTIONAL, -- *m.m.
814     transactionAuthCode          TransactionAuthCode          OPTIONAL,
815     dataVolumeIncoming           DataVolumeIncoming           OPTIONAL,
816     dataVolumeOutgoing           DataVolumeOutgoing           OPTIONAL,
817     totalDataVolume              TotalDataVolume              OPTIONAL,
818     chargeRefundIndicator        ChargeRefundIndicator        OPTIONAL,
819     contentChargingPoint         ContentChargingPoint         OPTIONAL,
820     chargeInformationList        ChargeInformationList        OPTIONAL,
821     advisedChargeInformation     AdvisedChargeInformation     OPTIONAL,
822 ...
823 }
824
825 ContentServiceUsedList ::= [APPLICATION 285] SEQUENCE OF ContentServiceUsed
826  
827 ContentTransactionBasicInfo ::= [APPLICATION 304] SEQUENCE
828 {
829     rapFileSequenceNumber      RapFileSequenceNumber      OPTIONAL,
830     orderPlacedTimeStamp       OrderPlacedTimeStamp       OPTIONAL,
831     requestedDeliveryTimeStamp RequestedDeliveryTimeStamp OPTIONAL,
832     actualDeliveryTimeStamp    ActualDeliveryTimeStamp    OPTIONAL,
833     totalTransactionDuration   TotalTransactionDuration   OPTIONAL,
834     transactionStatus          TransactionStatus          OPTIONAL,
835 ...
836 }
837
838 ContentTransactionCode ::= [APPLICATION 336] INTEGER
839  
840 ContentTransactionType ::= [APPLICATION 337] INTEGER
841  
842 CseInformation ::= [APPLICATION 79] OCTET STRING --(SIZE(1..40))
843
844 CurrencyConversion ::= [APPLICATION 106] SEQUENCE
845 {
846     exchangeRateCode      ExchangeRateCode      OPTIONAL, -- *m.m.
847     numberOfDecimalPlaces NumberOfDecimalPlaces OPTIONAL, -- *m.m.
848     exchangeRate          ExchangeRate          OPTIONAL, -- *m.m.
849 ...
850 }
851
852 CurrencyConversionList ::= [APPLICATION 80] SEQUENCE OF CurrencyConversion
853
854 CustomerIdentifier ::= [APPLICATION 364] AsciiString
855
856 CustomerIdType ::= [APPLICATION 363] INTEGER
857
858 DataVolume ::= INTEGER 
859
860 DataVolumeIncoming ::= [APPLICATION 250] DataVolume
861
862 DataVolumeOutgoing ::= [APPLICATION 251] DataVolume
863
864 --
865 --  The following datatypes are used to denote timestamps.
866 --  Each timestamp consists of a local timestamp and a
867 --  corresponding UTC time offset. 
868 --  Except for the timestamps used within the Batch Control 
869 --  Information and the Audit Control Information 
870 --  the UTC time offset is identified by a code referencing
871 --  the UtcTimeOffsetInfo.
872 --  
873  
874 --
875 -- We start with the “short” datatype referencing the 
876 -- UtcTimeOffsetInfo.
877 -- 
878
879 DateTime ::= SEQUENCE 
880 {
881      -- 
882      -- Local timestamps are noted in the format
883      --
884      --     CCYYMMDDhhmmss
885      --
886      -- where CC  =  century  (‘19’, ‘20’,...)
887      --       YY  =  year     (‘00’ – ‘99’)
888      --       MM  =  month    (‘01’, ‘02’, ... , ‘12’)
889      --       DD  =  day      (‘01’, ‘02’, ... , ‘31’)
890      --       hh  =  hour     (‘00’, ‘01’, ... , ‘23’)
891      --       mm  =  minutes  (‘00’, ‘01’, ... , ‘59’)
892      --       ss  =  seconds  (‘00’, ‘01’, ... , ‘59’)
893      -- 
894     localTimeStamp     LocalTimeStamp    OPTIONAL, -- *m.m.
895     utcTimeOffsetCode  UtcTimeOffsetCode OPTIONAL, -- *m.m.
896 ...
897 }
898
899 --
900 -- The following version is the “long” datatype
901 -- containing the UTC time offset directly. 
902 --
903
904 DateTimeLong ::= SEQUENCE 
905 {
906     localTimeStamp     LocalTimeStamp OPTIONAL, -- *m.m.
907     utcTimeOffset      UtcTimeOffset  OPTIONAL, -- *m.m.
908 ...
909 }
910
911 DefaultCallHandlingIndicator ::= [APPLICATION 87] INTEGER
912
913 DepositTimeStamp ::= [APPLICATION 88] DateTime
914
915 Destination ::= [APPLICATION 89] SEQUENCE
916 {
917     calledNumber                CalledNumber            OPTIONAL,
918     dialledDigits               DialledDigits         OPTIONAL,
919     calledPlace                 CalledPlace           OPTIONAL,
920     calledRegion                CalledRegion          OPTIONAL,
921     sMSDestinationNumber        SMSDestinationNumber  OPTIONAL,
922 ...
923 }
924
925 DestinationNetwork ::= [APPLICATION 90] NetworkId 
926
927 DialledDigits ::= [APPLICATION 279] AsciiString
928
929 Discount ::= [APPLICATION 412] DiscountValue
930
931 DiscountableAmount ::= [APPLICATION 423] AbsoluteAmount
932
933 DiscountApplied ::= [APPLICATION 428] CHOICE 
934 {
935     fixedDiscountValue    FixedDiscountValue, 
936     discountRate          DiscountRate,
937 ...
938 }
939
940 DiscountCode ::= [APPLICATION 91] INTEGER
941
942 DiscountInformation ::= [APPLICATION 96] SEQUENCE
943 {
944     discountCode        DiscountCode            OPTIONAL, -- *m.m.
945     discount            Discount                OPTIONAL,
946     discountableAmount  DiscountableAmount      OPTIONAL,
947 ...
948 }
949
950 Discounting ::= [APPLICATION 94] SEQUENCE
951 {
952     discountCode    DiscountCode    OPTIONAL, -- *m.m.
953     discountApplied DiscountApplied OPTIONAL, -- *m.m.
954 ...
955 }
956
957 DiscountingList ::= [APPLICATION 95]  SEQUENCE OF Discounting
958
959 DiscountRate ::= [APPLICATION 92] PercentageRate
960
961 DiscountValue ::= AbsoluteAmount
962
963 DistanceChargeBandCode ::= [APPLICATION 98] AsciiString --(SIZE(1))
964
965 EarliestCallTimeStamp ::= [APPLICATION 101] DateTimeLong
966
967 ElementId ::= [APPLICATION 437] AsciiString
968
969 ElementType ::= [APPLICATION 438] INTEGER
970
971 EquipmentId ::= [APPLICATION 290] AsciiString
972
973 EquipmentIdType ::= [APPLICATION 322] INTEGER
974
975 Esn ::= [APPLICATION 103] NumberString
976
977 ExchangeRate ::= [APPLICATION 104] INTEGER
978
979 ExchangeRateCode ::= [APPLICATION 105] Code
980
981 FileAvailableTimeStamp ::= [APPLICATION 107] DateTimeLong
982
983 FileCreationTimeStamp ::= [APPLICATION 108] DateTimeLong
984
985 FileSequenceNumber ::= [APPLICATION 109] NumberString --(SIZE(5))
986
987 FileTypeIndicator ::= [APPLICATION 110] AsciiString --(SIZE(1))
988
989 FixedDiscountValue ::= [APPLICATION 411] DiscountValue
990
991 Fnur ::= [APPLICATION 111] INTEGER
992
993 GeographicalLocation ::= [APPLICATION 113]  SEQUENCE
994 {
995     servingNetwork              ServingNetwork                  OPTIONAL,
996     servingBid                  ServingBid                      OPTIONAL,
997     servingLocationDescription  ServingLocationDescription  OPTIONAL,
998 ...
999 }
1000
1001 GprsBasicCallInformation ::= [APPLICATION 114] SEQUENCE
1002 {
1003     gprsChargeableSubscriber    GprsChargeableSubscriber OPTIONAL, -- *m.m.
1004     rapFileSequenceNumber       RapFileSequenceNumber    OPTIONAL,
1005     gprsDestination             GprsDestination          OPTIONAL, -- *m.m.
1006     callEventStartTimeStamp     CallEventStartTimeStamp  OPTIONAL, -- *m.m.
1007     totalCallEventDuration      TotalCallEventDuration   OPTIONAL, -- *m.m.
1008     causeForTerm                CauseForTerm             OPTIONAL,
1009     partialTypeIndicator        PartialTypeIndicator     OPTIONAL,
1010     pDPContextStartTimestamp    PDPContextStartTimestamp OPTIONAL,
1011     networkInitPDPContext       NetworkInitPDPContext    OPTIONAL,
1012     chargingId                  ChargingId               OPTIONAL, -- *m.m.
1013 ...
1014 }
1015
1016 GprsChargeableSubscriber ::= [APPLICATION 115] SEQUENCE
1017 {
1018     chargeableSubscriber        ChargeableSubscriber    OPTIONAL,
1019     pdpAddress                  PdpAddress              OPTIONAL,
1020     networkAccessIdentifier     NetworkAccessIdentifier OPTIONAL,
1021 ...
1022 }
1023
1024 GprsDestination ::= [APPLICATION 116] SEQUENCE
1025 {
1026     accessPointNameNI           AccessPointNameNI      OPTIONAL, -- *m.m.
1027     accessPointNameOI           AccessPointNameOI      OPTIONAL,
1028 ...
1029 }
1030
1031 GprsLocationInformation ::= [APPLICATION 117] SEQUENCE
1032 {
1033     gprsNetworkLocation         GprsNetworkLocation     OPTIONAL, -- *m.m.
1034     homeLocationInformation     HomeLocationInformation OPTIONAL,
1035     geographicalLocation        GeographicalLocation    OPTIONAL, 
1036 ...
1037
1038
1039 GprsNetworkLocation ::= [APPLICATION 118] SEQUENCE
1040 {
1041     recEntity                   RecEntityCodeList OPTIONAL, -- *m.m.
1042     locationArea                LocationArea      OPTIONAL,
1043     cellId                      CellId            OPTIONAL,
1044 ...
1045 }
1046
1047 GprsServiceUsed ::= [APPLICATION 121]  SEQUENCE
1048 {
1049     iMSSignallingContext        IMSSignallingContext  OPTIONAL,
1050     dataVolumeIncoming          DataVolumeIncoming    OPTIONAL, -- *m.m.
1051     dataVolumeOutgoing          DataVolumeOutgoing    OPTIONAL, -- *m.m.
1052     chargeInformationList       ChargeInformationList OPTIONAL, -- *m.m.
1053 ...
1054 }
1055
1056 GsmChargeableSubscriber ::= [APPLICATION 286] SEQUENCE
1057 {
1058     imsi     Imsi   OPTIONAL,
1059     msisdn   Msisdn OPTIONAL,
1060 ...
1061 }
1062
1063 GuaranteedBitRate ::= [APPLICATION 420] OCTET STRING --(SIZE (1))
1064
1065 HomeBid ::= [APPLICATION 122]  Bid
1066
1067 HomeIdentifier ::= [APPLICATION 288] AsciiString
1068
1069 HomeIdType ::= [APPLICATION 311] INTEGER
1070
1071 HomeLocationDescription ::= [APPLICATION 413] LocationDescription
1072
1073 HomeLocationInformation ::= [APPLICATION 123] SEQUENCE
1074 {
1075     homeBid                     HomeBid                         OPTIONAL, -- *m.m.
1076     homeLocationDescription     HomeLocationDescription OPTIONAL, -- *m.m.
1077 ...
1078 }
1079
1080 HorizontalAccuracyDelivered ::= [APPLICATION 392] INTEGER
1081
1082 HorizontalAccuracyRequested ::= [APPLICATION 385] INTEGER
1083
1084 HSCSDIndicator ::= [APPLICATION 424] AsciiString --(SIZE(1))
1085
1086 Imei ::= [APPLICATION 128] BCDString --(SIZE(7..8))
1087
1088 ImeiOrEsn ::= [APPLICATION 429] CHOICE 
1089 {
1090     imei  Imei,
1091     esn   Esn,
1092 ...
1093
1094
1095 Imsi ::= [APPLICATION 129] BCDString --(SIZE(3..8))
1096
1097 IMSSignallingContext ::= [APPLICATION 418] INTEGER
1098
1099 InternetServiceProvider ::= [APPLICATION 329] SEQUENCE
1100 {
1101     ispIdType        IspIdType        OPTIONAL, -- *m.m.
1102     ispIdentifier    IspIdentifier    OPTIONAL, -- *m.m.
1103 ...
1104 }
1105  
1106 InternetServiceProviderIdList ::= [APPLICATION 330] SEQUENCE OF InternetServiceProvider
1107
1108 IspIdentifier ::= [APPLICATION 294] AsciiString
1109  
1110 IspIdType ::= [APPLICATION 293] INTEGER
1111
1112 ISPList ::= [APPLICATION 378] SEQUENCE OF InternetServiceProvider
1113
1114 NetworkIdType ::= [APPLICATION 331] INTEGER
1115
1116 NetworkIdentifier ::= [APPLICATION 295] AsciiString
1117
1118 Network ::= [APPLICATION 332] SEQUENCE
1119 {
1120     networkIdType     NetworkIdType     OPTIONAL, -- *m.m.
1121     networkIdentifier NetworkIdentifier OPTIONAL, -- *m.m.
1122 ...
1123 }
1124  
1125 NetworkList ::= [APPLICATION 333] SEQUENCE OF Network
1126  
1127 LatestCallTimeStamp ::= [APPLICATION 133] DateTimeLong
1128
1129 LCSQosDelivered ::= [APPLICATION 390] SEQUENCE
1130 {
1131     lCSTransactionStatus          LCSTransactionStatus        OPTIONAL,
1132     horizontalAccuracyDelivered   HorizontalAccuracyDelivered OPTIONAL,
1133     verticalAccuracyDelivered     VerticalAccuracyDelivered   OPTIONAL,
1134     responseTime                  ResponseTime                OPTIONAL,
1135     positioningMethod             PositioningMethod           OPTIONAL,
1136     trackingPeriod                TrackingPeriod              OPTIONAL,
1137     trackingFrequency             TrackingFrequency           OPTIONAL,
1138     ageOfLocation                 AgeOfLocation               OPTIONAL,
1139 ...
1140 }
1141
1142 LCSQosRequested ::= [APPLICATION 383] SEQUENCE
1143 {
1144     lCSRequestTimestamp           LCSRequestTimestamp         OPTIONAL, -- *m.m.
1145     horizontalAccuracyRequested   HorizontalAccuracyRequested OPTIONAL,
1146     verticalAccuracyRequested     VerticalAccuracyRequested   OPTIONAL,
1147     responseTimeCategory          ResponseTimeCategory        OPTIONAL,
1148     trackingPeriod                TrackingPeriod              OPTIONAL,
1149     trackingFrequency             TrackingFrequency           OPTIONAL,
1150 ...
1151 }
1152
1153 LCSRequestTimestamp ::= [APPLICATION 384] DateTime
1154
1155 LCSSPIdentification ::= [APPLICATION 375] SEQUENCE
1156 {
1157  contentProviderIdType         ContentProviderIdType     OPTIONAL, -- *m.m.
1158  contentProviderIdentifier     ContentProviderIdentifier OPTIONAL, -- *m.m.
1159 ...
1160 }
1161
1162 LCSSPIdentificationList ::= [APPLICATION 374] SEQUENCE OF LCSSPIdentification
1163
1164 LCSSPInformation ::= [APPLICATION 373] SEQUENCE
1165 {
1166     lCSSPIdentificationList       LCSSPIdentificationList OPTIONAL, -- *m.m.
1167     iSPList                       ISPList                 OPTIONAL,
1168     networkList                   NetworkList             OPTIONAL,
1169 ...
1170 }
1171
1172 LCSTransactionStatus ::= [APPLICATION 391] INTEGER
1173
1174 LocalCurrency ::= [APPLICATION 135] Currency
1175
1176 LocalTimeStamp ::= [APPLICATION 16] NumberString --(SIZE(14))
1177
1178 LocationArea ::= [APPLICATION 136] INTEGER 
1179
1180 LocationDescription ::= AsciiString
1181
1182 LocationIdentifier ::= [APPLICATION 289] AsciiString
1183
1184 LocationIdType ::= [APPLICATION 315] INTEGER
1185
1186 LocationInformation ::= [APPLICATION 138]  SEQUENCE
1187 {
1188     networkLocation             NetworkLocation         OPTIONAL, -- *m.m.
1189     homeLocationInformation     HomeLocationInformation OPTIONAL,
1190     geographicalLocation        GeographicalLocation    OPTIONAL,
1191 ...
1192
1193
1194 LocationServiceUsage ::= [APPLICATION 382] SEQUENCE
1195 {
1196     lCSQosRequested               LCSQosRequested       OPTIONAL, -- *m.m.
1197     lCSQosDelivered               LCSQosDelivered       OPTIONAL,
1198     chargingTimeStamp             ChargingTimeStamp     OPTIONAL,
1199     chargeInformationList         ChargeInformationList OPTIONAL, -- *m.m.
1200 ...
1201 }
1202
1203 MaximumBitRate ::= [APPLICATION 421] OCTET STRING --(SIZE (1))
1204
1205 Mdn ::= [APPLICATION 253] NumberString
1206
1207 MessageDescription ::= [APPLICATION 142] AsciiString
1208
1209 MessageDescriptionCode ::= [APPLICATION 141] Code
1210
1211 MessageDescriptionInformation ::= [APPLICATION 143] SEQUENCE
1212 {
1213     messageDescriptionCode MessageDescriptionCode OPTIONAL, -- *m.m.
1214     messageDescription     MessageDescription     OPTIONAL, -- *m.m.
1215 ...
1216 }
1217
1218 MessageStatus ::= [APPLICATION 144] INTEGER
1219
1220 MessageType ::= [APPLICATION 145] INTEGER
1221
1222 MessagingEventService ::= [APPLICATION 439] INTEGER
1223
1224 Min ::= [APPLICATION 146] NumberString --(SIZE(2..15)) 
1225
1226 MinChargeableSubscriber ::= [APPLICATION 254] SEQUENCE
1227 {
1228     min     Min    OPTIONAL, -- *m.m.
1229     mdn     Mdn    OPTIONAL,
1230 ...
1231 }
1232
1233 MoBasicCallInformation ::= [APPLICATION 147] SEQUENCE
1234 {
1235     chargeableSubscriber        ChargeableSubscriber    OPTIONAL, -- *m.m.
1236     rapFileSequenceNumber       RapFileSequenceNumber   OPTIONAL,
1237     destination                 Destination             OPTIONAL,
1238     destinationNetwork          DestinationNetwork      OPTIONAL,
1239     callEventStartTimeStamp     CallEventStartTimeStamp OPTIONAL, -- *m.m.
1240     totalCallEventDuration      TotalCallEventDuration  OPTIONAL, -- *m.m.
1241     simToolkitIndicator         SimToolkitIndicator     OPTIONAL,
1242     causeForTerm                CauseForTerm            OPTIONAL,
1243 ...
1244 }
1245
1246 MobileSessionService ::= [APPLICATION 440] INTEGER      
1247
1248 Msisdn ::= [APPLICATION 152] BCDString --(SIZE(1..9))
1249
1250 MtBasicCallInformation ::= [APPLICATION 153] SEQUENCE
1251 {
1252     chargeableSubscriber        ChargeableSubscriber    OPTIONAL, -- *m.m.
1253     rapFileSequenceNumber       RapFileSequenceNumber   OPTIONAL,
1254     callOriginator              CallOriginator          OPTIONAL,
1255     originatingNetwork          OriginatingNetwork      OPTIONAL,
1256     callEventStartTimeStamp     CallEventStartTimeStamp OPTIONAL, -- *m.m.
1257     totalCallEventDuration      TotalCallEventDuration  OPTIONAL, -- *m.m.
1258     simToolkitIndicator         SimToolkitIndicator     OPTIONAL,
1259     causeForTerm                CauseForTerm            OPTIONAL,
1260 ...
1261 }
1262
1263 NetworkAccessIdentifier ::= [APPLICATION 417] AsciiString
1264
1265 NetworkElement ::= [APPLICATION 441]  SEQUENCE
1266 {
1267 elementType             ElementType  OPTIONAL, -- *m.m.
1268 elementId               ElementId    OPTIONAL, -- *m.m.
1269 ...
1270 }
1271
1272 NetworkElementList ::= [APPLICATION 442] SEQUENCE OF NetworkElement
1273
1274 NetworkId ::= AsciiString --(SIZE(1..6))
1275
1276 NetworkInitPDPContext ::= [APPLICATION 245] INTEGER
1277
1278 NetworkLocation ::= [APPLICATION 156]  SEQUENCE
1279 {
1280     recEntityCode               RecEntityCode OPTIONAL, -- *m.m.
1281     callReference               CallReference OPTIONAL,
1282     locationArea                LocationArea  OPTIONAL,
1283     cellId                      CellId        OPTIONAL,
1284 ...
1285 }
1286
1287 NonChargedNumber ::= [APPLICATION 402] AsciiString
1288
1289 NonChargedParty ::= [APPLICATION 443]  SEQUENCE
1290 {
1291     nonChargedPartyNumber       NonChargedPartyNumber    OPTIONAL,
1292     nonChargedPublicUserId      NonChargedPublicUserId OPTIONAL,
1293 ...
1294 }
1295
1296 NonChargedPartyNumber ::= [APPLICATION 444] AddressStringDigits
1297
1298 NonChargedPublicUserId ::= [APPLICATION 445] AsciiString 
1299
1300 NumberOfDecimalPlaces ::= [APPLICATION 159] INTEGER
1301
1302 ObjectType ::= [APPLICATION 281] INTEGER
1303
1304 OperatorSpecInfoList ::= [APPLICATION 162] SEQUENCE OF OperatorSpecInformation
1305
1306 OperatorSpecInformation ::= [APPLICATION 163] AsciiString
1307
1308 OrderPlacedTimeStamp ::= [APPLICATION 300] DateTime
1309
1310 OriginatingNetwork ::= [APPLICATION 164] NetworkId 
1311
1312 PacketDataProtocolAddress ::= [APPLICATION 165] AsciiString 
1313
1314 PaidIndicator ::= [APPLICATION 346] INTEGER
1315  
1316 PartialTypeIndicator ::=  [APPLICATION 166] AsciiString --(SIZE(1))
1317
1318 PaymentMethod ::= [APPLICATION 347] INTEGER
1319
1320 PdpAddress ::= [APPLICATION 167] PacketDataProtocolAddress
1321
1322 PDPContextStartTimestamp ::= [APPLICATION 260] DateTime
1323
1324 PlmnId ::= [APPLICATION 169] AsciiString --(SIZE(5))
1325
1326 PositioningMethod ::= [APPLICATION 395] INTEGER
1327
1328 PriorityCode ::= [APPLICATION 170] INTEGER
1329
1330 PublicUserId ::= [APPLICATION 446] AsciiString 
1331
1332 RapFileSequenceNumber ::= [APPLICATION 181]  FileSequenceNumber
1333
1334 RecEntityCode ::= [APPLICATION 184] Code
1335
1336 RecEntityCodeList ::= [APPLICATION 185] SEQUENCE OF RecEntityCode
1337
1338 RecEntityId ::= [APPLICATION 400] AsciiString
1339
1340 RecEntityInfoList ::= [APPLICATION 188] SEQUENCE OF RecEntityInformation
1341
1342 RecEntityInformation ::= [APPLICATION 183] SEQUENCE
1343 {
1344     recEntityCode  RecEntityCode OPTIONAL, -- *m.m.
1345     recEntityType  RecEntityType OPTIONAL, -- *m.m.
1346     recEntityId    RecEntityId   OPTIONAL, -- *m.m.
1347 ...
1348 }
1349  
1350 RecEntityType ::= [APPLICATION 186] INTEGER
1351
1352 Recipient ::= [APPLICATION 182]  PlmnId
1353
1354 ReleaseVersionNumber ::= [APPLICATION 189] INTEGER
1355
1356 RequestedDeliveryTimeStamp ::= [APPLICATION 301] DateTime
1357
1358 ResponseTime ::= [APPLICATION 394] INTEGER
1359
1360 ResponseTimeCategory ::= [APPLICATION 387] INTEGER
1361
1362 ScuBasicInformation ::= [APPLICATION 191] SEQUENCE
1363 {
1364     chargeableSubscriber      ScuChargeableSubscriber    OPTIONAL, -- *m.m.
1365     chargedPartyStatus        ChargedPartyStatus         OPTIONAL, -- *m.m.
1366     nonChargedNumber          NonChargedNumber           OPTIONAL, -- *m.m.
1367     clirIndicator             ClirIndicator              OPTIONAL,
1368     originatingNetwork        OriginatingNetwork         OPTIONAL,
1369     destinationNetwork        DestinationNetwork         OPTIONAL,
1370 ...
1371 }
1372
1373 ScuChargeType ::= [APPLICATION 192]  SEQUENCE
1374 {
1375     messageStatus               MessageStatus          OPTIONAL, -- *m.m.
1376     priorityCode                PriorityCode           OPTIONAL, -- *m.m.
1377     distanceChargeBandCode      DistanceChargeBandCode OPTIONAL,
1378     messageType                 MessageType            OPTIONAL, -- *m.m.
1379     messageDescriptionCode      MessageDescriptionCode OPTIONAL, -- *m.m.
1380 ...
1381 }
1382
1383 ScuTimeStamps ::= [APPLICATION 193]  SEQUENCE
1384 {
1385     depositTimeStamp            DepositTimeStamp    OPTIONAL, -- *m.m.
1386     completionTimeStamp         CompletionTimeStamp OPTIONAL, -- *m.m.
1387     chargingPoint               ChargingPoint       OPTIONAL, -- *m.m.
1388 ...
1389 }
1390
1391 ScuChargeableSubscriber ::= [APPLICATION 430] CHOICE 
1392 {
1393     gsmChargeableSubscriber    GsmChargeableSubscriber,
1394     minChargeableSubscriber    MinChargeableSubscriber,
1395 ...
1396 }
1397
1398 Sender ::= [APPLICATION 196]  PlmnId
1399
1400 ServiceStartTimestamp ::= [APPLICATION 447] DateTime
1401
1402 ServingBid ::= [APPLICATION 198]  Bid
1403
1404 ServingLocationDescription ::= [APPLICATION 414] LocationDescription
1405
1406 ServingNetwork ::= [APPLICATION 195]  AsciiString
1407
1408 ServingPartiesInformation ::= [APPLICATION 335] SEQUENCE
1409 {
1410   contentProviderName           ContentProviderName           OPTIONAL, -- *m.m.
1411   contentProviderIdList         ContentProviderIdList         OPTIONAL,
1412   internetServiceProviderIdList InternetServiceProviderIdList OPTIONAL,
1413   networkList                   NetworkList                   OPTIONAL,
1414 ...
1415 }
1416
1417 SessionChargeInfoList ::= [APPLICATION 448] SEQUENCE OF SessionChargeInformation
1418
1419 SessionChargeInformation ::= [APPLICATION 449] SEQUENCE
1420 {
1421 chargedItem                     ChargedItem              OPTIONAL, -- *m.m.    
1422 exchangeRateCode                ExchangeRateCode         OPTIONAL,
1423         callTypeGroup           CallTypeGroup            OPTIONAL, -- *m.m.
1424         chargeDetailList        ChargeDetailList         OPTIONAL, -- *m.m.
1425         taxInformationList      TaxInformationList       OPTIONAL,
1426 ...
1427 }         
1428  
1429 SimChargeableSubscriber ::= [APPLICATION 199] SEQUENCE
1430 {
1431     imsi     Imsi   OPTIONAL, -- *m.m.
1432     msisdn   Msisdn OPTIONAL,
1433 ...
1434 }
1435
1436 SimToolkitIndicator ::= [APPLICATION 200] AsciiString --(SIZE(1)) 
1437
1438 SMSDestinationNumber ::= [APPLICATION 419] AsciiString
1439
1440 SMSOriginator ::= [APPLICATION 425] AsciiString
1441
1442 SpecificationVersionNumber  ::= [APPLICATION 201] INTEGER
1443
1444 SsParameters ::= [APPLICATION 204] AsciiString --(SIZE(1..40))
1445
1446 SupplServiceActionCode ::= [APPLICATION 208] INTEGER
1447
1448 SupplServiceCode ::= [APPLICATION 209] HexString --(SIZE(2))
1449
1450 SupplServiceUsed ::= [APPLICATION 206] SEQUENCE
1451 {
1452     supplServiceCode       SupplServiceCode       OPTIONAL, -- *m.m.
1453     supplServiceActionCode SupplServiceActionCode OPTIONAL, -- *m.m.
1454     ssParameters           SsParameters           OPTIONAL,
1455     chargingTimeStamp      ChargingTimeStamp      OPTIONAL,
1456     chargeInformation      ChargeInformation      OPTIONAL,
1457     basicServiceCodeList   BasicServiceCodeList   OPTIONAL,
1458 ...
1459 }
1460
1461 TapCurrency ::= [APPLICATION 210] Currency
1462
1463 TapDecimalPlaces ::= [APPLICATION 244] INTEGER
1464
1465 TaxableAmount ::= [APPLICATION 398] AbsoluteAmount
1466
1467 Taxation ::= [APPLICATION 216] SEQUENCE
1468 {
1469     taxCode      TaxCode      OPTIONAL, -- *m.m.
1470     taxType      TaxType      OPTIONAL, -- *m.m.
1471     taxRate      TaxRate      OPTIONAL,
1472     chargeType   ChargeType   OPTIONAL,
1473     taxIndicator TaxIndicator OPTIONAL,
1474 ...
1475 }
1476
1477 TaxationList ::= [APPLICATION 211]  SEQUENCE OF Taxation
1478
1479 TaxCode ::= [APPLICATION 212] INTEGER
1480
1481 TaxIndicator ::= [APPLICATION 432] AsciiString --(SIZE(1))
1482
1483 TaxInformation ::= [APPLICATION 213] SEQUENCE
1484 {
1485     taxCode          TaxCode       OPTIONAL, -- *m.m.
1486     taxValue         TaxValue      OPTIONAL, -- *m.m.
1487     taxableAmount    TaxableAmount OPTIONAL,
1488 ...
1489 }
1490
1491 TaxInformationList ::= [APPLICATION 214]  SEQUENCE OF TaxInformation
1492
1493 -- The TaxRate item is of a fixed length to ensure that the full 5 
1494 -- decimal places is provided.
1495
1496 TaxRate ::= [APPLICATION 215] NumberString --(SIZE(7))
1497
1498 TaxType ::= [APPLICATION 217] AsciiString --(SIZE(2))
1499
1500 TaxValue ::= [APPLICATION 397] AbsoluteAmount
1501
1502 TeleServiceCode ::= [APPLICATION 218] HexString --(SIZE(2))
1503
1504 ThirdPartyInformation ::= [APPLICATION 219]  SEQUENCE
1505 {
1506     thirdPartyNumber            ThirdPartyNumber        OPTIONAL,
1507     clirIndicator               ClirIndicator         OPTIONAL,
1508 ...
1509 }
1510
1511 ThirdPartyNumber ::= [APPLICATION 403] AddressStringDigits
1512
1513 ThreeGcamelDestination ::= [APPLICATION 431] CHOICE
1514 {
1515     camelDestinationNumber    CamelDestinationNumber,
1516     gprsDestination           GprsDestination,
1517 ...
1518 }
1519
1520 TotalAdvisedCharge ::= [APPLICATION 356] AbsoluteAmount
1521  
1522 TotalAdvisedChargeRefund ::= [APPLICATION 357] AbsoluteAmount
1523  
1524 TotalAdvisedChargeValue ::= [APPLICATION 360] SEQUENCE
1525 {
1526     advisedChargeCurrency    AdvisedChargeCurrency    OPTIONAL,
1527     totalAdvisedCharge       TotalAdvisedCharge       OPTIONAL, -- *m.m.
1528     totalAdvisedChargeRefund TotalAdvisedChargeRefund OPTIONAL,
1529     totalCommission          TotalCommission          OPTIONAL,
1530     totalCommissionRefund    TotalCommissionRefund    OPTIONAL,
1531 ...
1532 }
1533  
1534 TotalAdvisedChargeValueList ::= [APPLICATION 361] SEQUENCE OF TotalAdvisedChargeValue
1535
1536 TotalCallEventDuration ::= [APPLICATION 223] INTEGER 
1537
1538 TotalCharge ::= [APPLICATION 415] AbsoluteAmount
1539
1540 TotalChargeRefund ::= [APPLICATION 355] AbsoluteAmount
1541  
1542 TotalCommission ::= [APPLICATION 358] AbsoluteAmount
1543  
1544 TotalCommissionRefund ::= [APPLICATION 359] AbsoluteAmount
1545  
1546 TotalDataVolume ::= [APPLICATION 343] DataVolume
1547  
1548 TotalDiscountRefund ::= [APPLICATION 354] AbsoluteAmount
1549  
1550 TotalDiscountValue ::= [APPLICATION 225] AbsoluteAmount
1551
1552 TotalTaxRefund ::= [APPLICATION 353] AbsoluteAmount
1553  
1554 TotalTaxValue ::= [APPLICATION 226] AbsoluteAmount
1555
1556 TotalTransactionDuration ::= [APPLICATION 416] TotalCallEventDuration
1557
1558 TrackedCustomerEquipment ::= [APPLICATION 381] SEQUENCE
1559 {
1560     equipmentIdType               EquipmentIdType OPTIONAL, -- *m.m.
1561     equipmentId                   EquipmentId     OPTIONAL, -- *m.m.
1562 ...
1563 }
1564
1565 TrackedCustomerHomeId ::= [APPLICATION 377] SEQUENCE
1566 {
1567     homeIdType                    HomeIdType     OPTIONAL, -- *m.m.
1568     homeIdentifier                HomeIdentifier OPTIONAL, -- *m.m.
1569 ...
1570 }
1571
1572 TrackedCustomerHomeIdList ::= [APPLICATION 376] SEQUENCE OF TrackedCustomerHomeId
1573
1574 TrackedCustomerIdentification ::= [APPLICATION 372] SEQUENCE
1575 {
1576     customerIdType                CustomerIdType     OPTIONAL, -- *m.m.
1577     customerIdentifier            CustomerIdentifier OPTIONAL, -- *m.m.
1578 ...
1579 }
1580
1581 TrackedCustomerIdList ::= [APPLICATION 370] SEQUENCE OF TrackedCustomerIdentification
1582
1583 TrackedCustomerInformation ::= [APPLICATION 367] SEQUENCE
1584 {
1585     trackedCustomerIdList         TrackedCustomerIdList     OPTIONAL, -- *m.m.
1586     trackedCustomerHomeIdList     TrackedCustomerHomeIdList OPTIONAL,
1587     trackedCustomerLocList        TrackedCustomerLocList    OPTIONAL,
1588     trackedCustomerEquipment      TrackedCustomerEquipment  OPTIONAL,
1589 ...
1590 }
1591
1592 TrackedCustomerLocation ::= [APPLICATION 380] SEQUENCE
1593 {
1594     locationIdType                LocationIdType     OPTIONAL, -- *m.m.
1595     locationIdentifier            LocationIdentifier OPTIONAL, -- *m.m.
1596 ...
1597 }
1598
1599 TrackedCustomerLocList ::= [APPLICATION 379] SEQUENCE OF TrackedCustomerLocation
1600
1601 TrackingCustomerEquipment ::= [APPLICATION 371] SEQUENCE
1602 {
1603     equipmentIdType               EquipmentIdType OPTIONAL, -- *m.m.
1604     equipmentId                   EquipmentId     OPTIONAL, -- *m.m.
1605 ...
1606 }
1607
1608 TrackingCustomerHomeId ::= [APPLICATION 366] SEQUENCE
1609 {
1610     homeIdType                    HomeIdType     OPTIONAL, -- *m.m.
1611     homeIdentifier                HomeIdentifier OPTIONAL, -- *m.m.
1612 ...
1613 }
1614
1615 TrackingCustomerHomeIdList ::= [APPLICATION 365] SEQUENCE OF TrackingCustomerHomeId
1616
1617 TrackingCustomerIdentification ::= [APPLICATION 362] SEQUENCE
1618 {
1619     customerIdType                CustomerIdType     OPTIONAL, -- *m.m.
1620     customerIdentifier            CustomerIdentifier OPTIONAL, -- *m.m.
1621 ...
1622 }
1623
1624 TrackingCustomerIdList ::= [APPLICATION 299] SEQUENCE OF TrackingCustomerIdentification
1625
1626 TrackingCustomerInformation ::= [APPLICATION 298] SEQUENCE
1627 {
1628     trackingCustomerIdList        TrackingCustomerIdList     OPTIONAL, -- *m.m.
1629     trackingCustomerHomeIdList    TrackingCustomerHomeIdList OPTIONAL,
1630     trackingCustomerLocList       TrackingCustomerLocList    OPTIONAL,
1631     trackingCustomerEquipment     TrackingCustomerEquipment  OPTIONAL,
1632 ...
1633 }
1634
1635 TrackingCustomerLocation ::= [APPLICATION 369] SEQUENCE
1636 {
1637     locationIdType                LocationIdType     OPTIONAL, -- *m.m.
1638     locationIdentifier            LocationIdentifier OPTIONAL, -- *m.m.
1639 ...
1640 }
1641
1642 TrackingCustomerLocList ::= [APPLICATION 368] SEQUENCE OF TrackingCustomerLocation
1643
1644 TrackingFrequency ::= [APPLICATION 389] INTEGER
1645
1646 TrackingPeriod ::= [APPLICATION 388] INTEGER
1647
1648 TransactionAuthCode ::= [APPLICATION 342] AsciiString
1649  
1650 TransactionDescriptionSupp ::= [APPLICATION 338] INTEGER
1651  
1652 TransactionDetailDescription ::= [APPLICATION 339] AsciiString
1653
1654 TransactionIdentifier ::= [APPLICATION 341] AsciiString
1655  
1656 TransactionShortDescription ::= [APPLICATION 340] AsciiString
1657  
1658 TransactionStatus ::= [APPLICATION 303] INTEGER
1659
1660 TransferCutOffTimeStamp ::= [APPLICATION 227] DateTimeLong
1661
1662 TransparencyIndicator ::= [APPLICATION 228] INTEGER
1663
1664 UserProtocolIndicator ::= [APPLICATION 280] INTEGER
1665
1666 UtcTimeOffset ::= [APPLICATION 231] AsciiString --(SIZE(5))
1667
1668 UtcTimeOffsetCode ::= [APPLICATION 232] Code
1669
1670 UtcTimeOffsetInfo ::= [APPLICATION 233] SEQUENCE
1671 {
1672     utcTimeOffsetCode   UtcTimeOffsetCode OPTIONAL, -- *m.m.
1673     utcTimeOffset       UtcTimeOffset     OPTIONAL, -- *m.m.
1674 ...
1675 }
1676
1677 UtcTimeOffsetInfoList ::= [APPLICATION 234]  SEQUENCE OF UtcTimeOffsetInfo
1678
1679 VerticalAccuracyDelivered ::= [APPLICATION 393] INTEGER
1680
1681 VerticalAccuracyRequested ::= [APPLICATION 386] INTEGER
1682
1683
1684 --
1685 -- Tagged common data types
1686 --
1687
1688 --
1689 -- The AbsoluteAmount data type is used to 
1690 -- encode absolute revenue amounts.
1691 -- The accuracy of all absolute amount values is defined
1692 -- by the value of TapDecimalPlaces within the group
1693 -- AccountingInfo for the entire TAP batch.
1694 -- Note, that only amounts greater than or equal to zero are allowed.
1695 -- The decimal number representing the amount is 
1696 -- derived from the encoded integer 
1697 -- value by division by 10^TapDecimalPlaces.
1698 -- for example for TapDecimalPlaces = 3 the following values
1699 -- will be derived:
1700 --       0   represents    0.000
1701 --      12   represents    0.012
1702 --    1234   represents    1.234
1703 -- for TapDecimalPlaces = 5 the following values will be
1704 -- derived:
1705 --       0   represents    0.00000
1706 --    1234   represents    0.01234
1707 --  123456   represents    1.23456
1708 -- This data type is used to encode (total) 
1709 -- charges, (total) discount values and 
1710 -- (total) tax values. 
1711 -- 
1712 AbsoluteAmount ::= INTEGER 
1713
1714 Bid ::=  AsciiString --(SIZE(5))
1715
1716 Code ::= INTEGER
1717
1718 --
1719 -- Non-tagged common data types
1720 --
1721 --
1722 -- Recommended common data types to be used for file encoding:
1723 --
1724 -- The following definitions should be used for TAP file creation instead of
1725 -- the default specifications (OCTET STRING)
1726 --
1727 --    AsciiString ::= VisibleString
1728 --
1729 --    Currency ::= VisibleString
1730 --
1731 --    HexString ::= VisibleString
1732 --
1733 --    NumberString ::= NumericString
1734 --
1735 --    AsciiString contains visible ISO 646 characters.
1736 --    Leading and trailing spaces must be discarded during processing.
1737 --    An AsciiString cannot contain only spaces.
1738
1739 AsciiString ::= OCTET STRING
1740
1741 --
1742 -- The BCDString data type (Binary Coded Decimal String) is used to represent
1743 -- several digits from 0 through 9, a, b, c, d, e.
1744 -- Two digits are encoded per octet.  The four leftmost bits of the octet represent
1745 -- the first digit while the four remaining bits represent the following digit.  
1746 -- A single f must be used as a filler when the total number of digits to be 
1747 -- encoded is odd.
1748 -- No other filler is allowed.
1749
1750 BCDString ::= OCTET STRING
1751
1752
1753 --
1754 -- The currency codes from ISO 4217
1755 -- are used to identify a currency 
1756 --
1757 Currency ::= OCTET STRING
1758
1759 --
1760 -- HexString contains ISO 646 characters from 0 through 9, A, B, C, D, E, F.
1761 --
1762
1763 HexString ::= OCTET STRING
1764
1765 --
1766 -- NumberString contains ISO 646 characters from 0 through 9.
1767 --
1768
1769 NumberString ::= OCTET STRING
1770
1771
1772 --
1773 -- The PercentageRate data type is used to
1774 -- encode percentage rates with an accuracy of 2 decimal places. 
1775 -- This data type is used to encode discount rates.
1776 -- The decimal number representing the percentage
1777 -- rate is obtained by dividing the integer value by 100
1778 -- Examples:
1779 --
1780 --     1500  represents  15.00 percent
1781 --     1     represents   0.01 percent
1782 --
1783 PercentageRate ::= INTEGER 
1784
1785
1786 -- END
1787 END
1788 }
1789
1790 1;