X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_svc.pm;h=65f8d58b61fa116b00da563785e5a73c60c842a6;hp=118ab79d20d419be6979de3cef99be98571372e9;hb=649ceeca76084d16d22013124bd7f80f053d75c4;hpb=918bbc9ce36a3dc5943f521e26751ea94a5a5539 diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm index 118ab79d2..65f8d58b6 100644 --- a/FS/FS/cust_svc.pm +++ b/FS/FS/cust_svc.pm @@ -3,6 +3,7 @@ package FS::cust_svc; use strict; use vars qw( @ISA $ignore_quantity ); use Carp qw( cluck ); +use FS::Conf; use FS::Record qw( qsearch qsearchs dbh ); use FS::cust_pkg; use FS::part_pkg; @@ -303,7 +304,12 @@ sub label { } elsif ( $svcdb eq 'svc_broadband' ) { $tag = $svc_x->ip_addr; } elsif ( $svcdb eq 'svc_external' ) { - $tag = $svc_x->id. ': '. $svc_x->title; + my $conf = new FS::Conf; + if ( $conf->config('svc_external-display_type') eq 'artera_turbo' ) { + $tag = sprintf('%010d', $svc_x->id). '-'. $svc_x->title; + } else { + $tag = $svc_x->id. ': '. $svc_x->title; + } } else { cluck "warning: asked for label of unsupported svcdb; using svcnum"; $tag = $svc_x->getfield('svcnum'); @@ -547,48 +553,22 @@ Meaningless for records where B is not "svc_acct". sub get_session_history { my($self, $start, $end, $attrib) = @_; - my $username = $self->svc_x->username; + #$attrib ??? - my @part_export = $self->part_svc->part_export('sqlradius') - or die "no sqlradius export configured for this service type"; + my @part_export = $self->part_svc->part_export('sqlradius'); + push @part_export, $self->part_svc->part_export('sqlradius_withdomain'); + die "no sqlradius or sqlradius_withdomain export configured for this". + "service type" + unless @part_export; #or return undef; my @sessions = (); foreach my $part_export ( @part_export ) { - - my $dbh = DBI->connect( map { $part_export->option($_) } - qw(datasrc username password) ) - or die "can't connect to sqlradius database: ". $DBI::errstr; - - #select a unix time conversion function based on database type - my $str2time; - if ( $dbh->{Driver}->{Name} =~ /^mysql(PP)?$/ ) { - $str2time = 'UNIX_TIMESTAMP('; - } elsif ( $dbh->{Driver}->{Name} eq 'Pg' ) { - $str2time = 'EXTRACT( EPOCH FROM '; - } else { - warn "warning: unknown database type ". $dbh->{Driver}->{Name}. - "; guessing how to convert to UNIX timestamps"; - $str2time = 'extract(epoch from '; - } - - my @fields = qw( acctstarttime acctstoptime acctsessiontime - acctinputoctets acctoutputoctets framedipaddress ); - - my $sth = $dbh->prepare('SELECT '. join(', ', @fields). - " FROM radacct - WHERE UserName = ? - AND $str2time AcctStopTime ) >= ? - AND $str2time AcctStopTime ) <= ? - ORDER BY AcctStartTime DESC - ") or die $dbh->errstr; - $sth->execute($username, $start, $end) or die $sth->errstr; - - push @sessions, map { { %$_ } } @{ $sth->fetchall_arrayref({}) }; - + push @sessions, $part_export->usage_sessions( $self->svc_x, $start, $end ); } - \@sessions + + \@sessions; }