diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-02-27 01:50:24 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-02-27 01:50:24 -0800 |
commit | 1d0f88642d94e7bbc4861c7c08290967794883b3 (patch) | |
tree | ec21c669f73704af02fb0e6c6fb386a74437abde /FS | |
parent | efa799391aeba085b65145428cab1cf1074d3f6d (diff) | |
parent | 0babd0e62f87f5c36535b30c40002c5c1abff7ea (diff) |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cdr/u4.pm | 104 | ||||
-rwxr-xr-x | FS/FS/svc_broadband.pm | 4 | ||||
-rw-r--r-- | FS/FS/svc_hardware.pm | 2 | ||||
-rw-r--r-- | FS/MANIFEST | 1 |
4 files changed, 107 insertions, 4 deletions
diff --git a/FS/FS/cdr/u4.pm b/FS/FS/cdr/u4.pm new file mode 100644 index 000000000..1b7a660e7 --- /dev/null +++ b/FS/FS/cdr/u4.pm @@ -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; diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index 87c73f2f0..01495ca39 100755 --- a/FS/FS/svc_broadband.pm +++ b/FS/FS/svc_broadband.pm @@ -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 = diff --git a/FS/FS/svc_hardware.pm b/FS/FS/svc_hardware.pm index af6865f12..96502e41e 100644 --- a/FS/FS/svc_hardware.pm +++ b/FS/FS/svc_hardware.pm @@ -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}$/ diff --git a/FS/MANIFEST b/FS/MANIFEST index 4d6bb120d..0214fe7bc 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -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 |