Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Wed, 27 Feb 2013 09:50:24 +0000 (01:50 -0800)
committerIvan Kohler <ivan@freeside.biz>
Wed, 27 Feb 2013 09:50:24 +0000 (01:50 -0800)
FS/FS/cdr/u4.pm [new file with mode: 0644]
FS/FS/svc_broadband.pm
FS/FS/svc_hardware.pm
FS/MANIFEST

diff --git a/FS/FS/cdr/u4.pm b/FS/FS/cdr/u4.pm
new file mode 100644 (file)
index 0000000..1b7a660
--- /dev/null
@@ -0,0 +1,104 @@
+package FS::cdr::u4;
+
+use strict;
+use vars qw(@ISA %info);
+use FS::cdr qw(_cdr_date_parser_maker);
+
+@ISA = qw(FS::cdr);
+
+%info = (
+  'name'          => 'U4',
+  'weight'        => 490,
+  'type'          => 'fixedlength',
+  'fixedlength_format' => [qw(
+    CDRType:3:1:3
+    MasterAccountID:12:4:15
+    SubAccountID:12:16:27
+    BillToNumber:18:28:45
+    AccountCode:12:46:57
+    CallDateStartTime:14:58:71
+    TimeOfDay:1:72:72
+    CalculatedSeconds:12:73:84
+    City:30:85:114
+    State:2:115:116
+    Country:40:117:156
+    Charges:21:157:177
+    CallDirection:1:178:178
+    CallIndicator:1:179:179
+    ReportIndicator:1:180:180
+    ANI:10:181:190
+    DNIS:10:191:200
+    PIN:16:201:216
+    OrigNumber:10:217:226
+    TermNumber:10:227:236
+    DialedNumber:18:237:254
+    DisplayNumber:18:255:272
+    RecordSource:1:273:273
+    LECInfoDigits:2:274:275
+    OrigNPA:4:276:279
+    OrigNXX:5:280:284
+    OrigLATA:3:285:287
+    OrigZone:1:288:288
+    OrigCircuit:12:289:300
+    OrigTrunkGroupCLLI:12:301:312
+    TermNPA:4:313:316
+    TermNXX:5:317:321
+    TermLATA:3:322:324
+    TermZone:1:325:325
+    TermCircuit:12:326:337
+    TermTrunkGroupCLLI:12:338:349
+    TermOCN:5:350:354
+  )],
+  # at least that's how they're defined in the spec we have.
+  # the real CDRs have several differences.
+  'import_fields' => [
+    '',               #CDRType (for now always 'V')
+    '',               #MasterAccountID
+    '',               #SubAccountID
+    'charged_party',  #BillToNumber
+    'accountcode',    #AccountCode
+    _cdr_date_parser_maker('startdate'),
+                      #CallDateTime
+    '',               #TimeOfDay (always 'S')
+    sub {             #CalculatedSeconds
+      my($cdr, $sec) = @_;
+      $cdr->duration($sec);
+      $cdr->billsec($sec);
+    },
+    '',               #City
+    '',               #State
+    '',               #Country
+    'upstream_price', #Charges
+    sub {             #CallDirection
+      my ($cdr, $dir) = @_;
+      $cdr->set('direction', $dir);
+      if ( $dir eq 'O' ) {
+        $cdr->set('src', $cdr->charged_party);
+      } elsif ( $dir eq 'I' ) {
+        $cdr->set('dst', $cdr->charged_party);
+      }
+    },
+    '',               #CallIndicator  #calltype?
+    '',               #ReportIndicator
+    sub {             #ANI
+      # it appears that it's the "other" number, not necessarily ANI.
+      my ($cdr, $number) = @_;
+      if ( $cdr->direction eq 'O' ) {
+        $cdr->set('dst', $number);
+      } elsif ( $cdr->direction eq 'I' ) {
+        $cdr->set('src', $number);
+      }
+    },
+    '',               #DNIS
+    '',               #PIN
+    '',               #OrigNumber
+    '',               #TermNumber
+    '',               #DialedNumber
+    '',               #DisplayNumber
+    '',               #RecordSource
+    '',               #LECInfoDigits
+    ('') x 13,
+  ],
+);
+
+1;
index 87c73f2..01495ca 100755 (executable)
@@ -243,7 +243,7 @@ Returns the IP address.
 sub label {
   my $self = shift;
   my $label = 'IP:'. ($self->ip_addr || 'Unknown');
-  $label .= '", MAC:'. $self->mac_addr
+  $label .= ', MAC:'. $self->mac_addr
     if $self->mac_addr;
   $label .= ' ('. $self->description. ')'
     if $self->description;
@@ -311,7 +311,7 @@ sub check {
 
   # remove delimiters
   my $mac_addr = uc($self->get('mac_addr'));
-  $mac_addr =~ s/[-: ]//g;
+  $mac_addr =~ s/[\W_]//g;
   $self->set('mac_addr', $mac_addr);
 
   my $error =
index af6865f..96502e4 100644 (file)
@@ -164,7 +164,7 @@ sub check {
   return $x unless ref $x;
 
   my $hw_addr = $self->getfield('hw_addr');
-  $hw_addr = join('', split(/\W/, $hw_addr));
+  $hw_addr = join('', split(/[_\W]/, $hw_addr));
   if ( $conf->exists('svc_hardware-check_mac_addr') ) {
     $hw_addr = uc($hw_addr);
     $hw_addr =~ /^[0-9A-F]{12}$/ 
index 4d6bb12..0214fe7 100644 (file)
@@ -149,7 +149,6 @@ FS/part_pkg/sqlradacct_hour.pm
 FS/part_pkg/subscription.pm
 FS/part_pkg/voip_sqlradacct.pm
 FS/part_pkg/voip_cdr.pm
-FS/part_pkg/base_delayed.pm
 FS/part_pop_local.pm
 FS/part_referral.pm
 FS/part_svc.pm