<%= $url = "$selfurl?action="; %by_pkg_label = (); # not used yet, but I'm sure it will be... @svc_phone = (); @svc_port = (); @svc_pbx = (); @bytes_svcs = (); # contains svc_acct and svc_broadband @bytes_cols = qw(seconds_used seconds upbytes_used upbytes downbytes_used downbytes totalbytes_used totalbytes); %bytes_show = map { $_ => 0 } @bytes_cols; foreach my $svc (@svcs) { $by_pkg_label{ $svc->{pkg_label} } ||= []; push @{ $by_pkg_label{ $svc->{pkg_label} } }, $svc; if (( $svc->{svcdb} eq 'svc_acct' ) || ( $svc->{svcdb} eq 'svc_broadband' )) { foreach my $field (@bytes_cols) { $bytes_show{$field} = 1 if length($svc->{$field}) or (($field !~ /_used$/) && $svc->{'recharge_'.$field}); } push @bytes_svcs, $svc; } elsif ( $svc->{svcdb} eq 'svc_phone' ) { push @svc_phone, $svc; } elsif ( $svc->{svcdb} eq 'svc_port' ) { push @svc_port, $svc; } elsif ( $svc->{svcdb} eq 'svc_pbx' ) { push @svc_pbx, $svc; } } ''; %> <%= include('header', 'Account usage') %> <%= if ( $error ) { $OUT .= qq!$error

!; } ''; %> <%= if ( @bytes_svcs ) { $OUT .= ''; $OUT .= ''; $OUT .= '' if $bytes_show{'seconds_used'}; $OUT .= '' if $bytes_show{'seconds'}; $OUT .= '' if $bytes_show{'upbytes_used'}; $OUT .= '' if $bytes_show{'upbytes'}; $OUT .= '' if $bytes_show{'downbytes_used'}; $OUT .= '' if $bytes_show{'downbytes'}; $OUT .= '' if $bytes_show{'totalbytes_used'}; $OUT .= '' if $bytes_show{'totalbytes'}; $OUT .= ''; } %> <%= foreach my $svc ( @bytes_svcs ) { my $link = "${url}view_usage_details;". "svcnum=$svc->{'svcnum'};beginning=0;ending=0"; my $username = $svc->{'value'}; $username =~ s/@.*?$//g if $view_usage_nodomain; $OUT .= ''; $OUT .= ''; foreach my $field (@bytes_cols) { $OUT .= '' if $bytes_show{$field}; } if ( $svc->{'recharge_amount'} ) { my $link = "${url}process_order_recharge;". "svcnum=$svc->{'svcnum'}"; $OUT .= ''; foreach my $field ( qw(seconds upbytes downbytes totalbytes) ) { $OUT .= '' if $bytes_show{$field.'_used'}; if ($bytes_show{$field}) { $OUT .= ''; } } $OUT .= ''; } } %> <%= scalar(@bytes_svcs) ? '
AccountTime usedTime remainingUpload usedUpload remainingDownload usedDownload remainingTotal usedTotal remaining
' . qq!!. $svc->{'label'}. ': '. $username .'' . $svc->{$field} . '
'; $OUT .= qq!!.'Recharge for $'; $OUT .= $svc->{'recharge_amount'} . ' with'; $OUT .= ''; $OUT .= $svc->{'recharge_'.$field} if $svc->{'recharge_'.$field}; $OUT .= '


' : '' %> <%= if ( @svc_phone or @svc_pbx ) { %any = (); for my $dir (qw(outbound inbound)) { $any{$dir} = grep { $_->{$dir} } (@svc_phone, @svc_pbx); } $OUT.= 'Call usage

'; if ( $any{outbound} ) { $OUT .= ' '; } if ( $any{inbound} ) { $OUT .= ' '; } $OUT .= ''; } else { $OUT .= ''; } %> <%= foreach my $svc_x ( @svc_phone, @svc_pbx ) { my $link = $url . 'view_cdr_details;' . 'svcnum='.$svc_x->{'svcnum'}. ';beginning=0;ending=0'; $OUT .= ''; # usage summary w/ links for my $dir (qw(outbound inbound)) { if ( $dir eq 'inbound' ) { $link .= ';inbound=1'; } if ( $svc_x->{$dir} ) { $OUT .= ''; } elsif ( $any{$dir} ) { $OUT .= ''; } } $OUT .= ''; } ''; %> <%= if ( @usage_pools ) { $OUT .= '
NumberDialedReceived
'. $svc_x->{'label'}. ': '. $svc_x->{'value'}; $OUT .= ''.qq!! . sprintf('%d calls (%.0f minutes)', $svc_x->{$dir}->{'count'}, $svc_x->{$dir}->{'duration'} / 60 ) . '
'; my $any_shared = 0; foreach my $usage (@usage_pools) { # false laziness with the back office side my ($description, $remain, $total, $shared) = @$usage; if ( $shared ) { $any_shared = 1; $description .= '*'; } my $ratio = 255 * ($remain/$total); $ratio = 255 if $color > 255; my $color = sprintf('STYLE="font-weight: bold; color: #%02x%02x00"', 255 - $ratio, $ratio); $OUT .= qq!!; } if ( $any_shared ) { $OUT .= ''. ''; } } if ( @svc_phone or @svc_pbx or @usage_pools ) { $OUT .= '
Remaining minutes
$description $remain / $total
* shared among all your phone plans


'; } ''; %> <%= if ( @svc_port ) { $OUT.= 'Bandwidth Graphs

'; } $OUT .= ''; %> <%= sub preset_range { my($start,$end,$label,$date_format,$prefix) = (shift,shift,shift,shift,shift); $start = Date::Format::time2str($date_format,$start); $end = Date::Format::time2str($date_format,$end); return ''.$label.''; } foreach my $svc_port ( @svc_port ) { $svcnum = $svc_port->{'svcnum'}; $default_end = time; $default_start = $default_end-86400; $OUT .= ''; $OUT .= qq! '; } %> <%= scalar(@svc_port) ? '
Service
'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'
!; $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum) .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum) .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum) .' | '.preset_range($default_end-86400*365,$default_end,'Last Year',$date_format,$svcnum); $OUT .= qq!
Start Date End Date
!; $OUT .= '


' : '' %> <%= include('footer') %>