1 <%= $url = "$selfurl?action=";
2 %by_pkg_label = (); # not used yet, but I'm sure it will be...
9 $by_pkg_label{ $_->{pkg_label} } ||= [];
10 push @{ $by_pkg_label{ $_->{pkg_label} } }, $_;
11 if ( $_->{svcdb} eq 'svc_acct' ) {
13 } elsif ( $_->{svcdb} eq 'svc_phone' ) {
15 } elsif ( $_->{svcdb} eq 'svc_port' ) {
17 } elsif ( $_->{svcdb} eq 'svc_pbx' ) {
23 <%= include('header', 'Account usage') %>
26 $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!;
29 <%= if ( @svc_acct ) {
30 $OUT.= '<TABLE BGCOLOR="#cccccc">
32 <TH ALIGN="left">Account</TH>
33 <TH ALIGN="right">Time remaining</TH>
34 <TH ALIGN="right">Upload remaining</TH>
35 <TH ALIGN="right">Download remaining</TH>
36 <TH ALIGN="right">Total remaining</TH>
43 <%= foreach my $svc ( @svc_acct ) {
44 my $link = "${url}view_usage_details;".
45 "svcnum=$svc->{'svcnum'};beginning=0;ending=0";
46 my $username = $svc->{'value'};
47 $username =~ s/@.*?$//g if $view_usage_nodomain;
49 $OUT .= qq!<A HREF="$link">!. $svc->{'label'}. ': '. $username .'</A>';
50 $OUT .= '</TD><TD ALIGN="right">';
51 $OUT .= $svc->{'seconds'};
52 $OUT .= '</TD><TD ALIGN="right">';
53 $OUT .= $svc->{'upbytes'};
54 $OUT .= '</TD><TD ALIGN="right">';
55 $OUT .= $svc->{'downbytes'};
56 $OUT .= '</TD><TD ALIGN="right">';
57 $OUT .= $svc->{'totalbytes'};
59 if ( $svc->{'recharge_amount'} ) {
60 my $link = "${url}process_order_recharge;".
61 "svcnum=$svc->{'svcnum'}";
62 $OUT .= '<TR><TD ALIGN="right">';
63 $OUT .= qq!<A HREF="$link">!.'Recharge for $';
64 $OUT .= $svc->{'recharge_amount'} . '</A> with';
65 $OUT .= '</TD><TD ALIGN="right">';
66 $OUT .= $svc->{'recharge_seconds'} if $svc->{'recharge_seconds'};
67 $OUT .= '</TD><TD ALIGN="right">';
68 $OUT .= $svc->{'recharge_upbytes'} if $svc->{'recharge_upbytes'};
69 $OUT .= '</TD><TD ALIGN="right">';
70 $OUT .= $svc->{'recharge_downbytes'} if $svc->{'recharge_downbytes'};
71 $OUT .= '</TD><TD ALIGN="right">';
72 $OUT .= $svc->{'recharge_totalbytes'} if $svc->{'recharge_totalbytes'};
78 <%= scalar(@svc_acct) ? '</TABLE><BR><BR>' : '' %>
80 <%= if ( @svc_phone or @svc_pbx ) {
82 for my $dir (qw(outbound inbound)) {
83 $any{$dir} = grep { $_->{$dir} } (@svc_phone, @svc_pbx);
85 $OUT.= '<FONT SIZE="4">Call usage</FONT><BR><BR>
86 <TABLE BGCOLOR="#cccccc" STYLE="display:inline-block">
88 <TH ALIGN="left">Number</TH>';
89 if ( $any{outbound} ) {
93 if ( $any{inbound} ) {
103 <%= foreach my $svc_x ( @svc_phone, @svc_pbx ) {
104 my $link = $url . 'view_cdr_details;' .
105 'svcnum='.$svc_x->{'svcnum'}.
106 ';beginning=0;ending=0';
107 $OUT .= '<TR><TD>'. $svc_x->{'label'}. ': '. $svc_x->{'value'};
109 # usage summary w/ links
110 for my $dir (qw(outbound inbound)) {
111 if ( $dir eq 'inbound' ) {
112 $link .= ';inbound=1';
114 if ( $svc_x->{$dir} ) {
115 $OUT .= '<TD ALIGN="right">'.qq!<A HREF="$link">! .
116 sprintf('%d calls (%.0f minutes)',
117 $svc_x->{$dir}->{'count'},
118 $svc_x->{$dir}->{'duration'} / 60
121 } elsif ( $any{$dir} ) {
130 <%= if ( @usage_pools ) {
132 <TABLE BGCOLOR="#cccccc" STYLE="display: inline-block">
133 <TR><TH COLSPAN=4>Remaining minutes</TH></TR>
136 foreach my $usage (@usage_pools) {
137 # false laziness with the back office side
138 my ($description, $remain, $total, $shared) = @$usage;
143 my $ratio = 255 * ($remain/$total);
144 $ratio = 255 if $color > 255;
146 sprintf('STYLE="font-weight: bold; color: #%02x%02x00"',
147 255 - $ratio, $ratio);
150 <TD ALIGN="right">$description</TD>
151 <TD $color ALIGN="right">$remain</TD>
153 <TD $color>$total</TD>
157 $OUT .= '<TR STYLE="font-size: 80%; font-style: italic">'.
158 '<TD COLSPAN=4>* shared among all your phone plans</TD></TR>';
161 if ( @svc_phone or @svc_pbx or @usage_pools ) {
162 $OUT .= '</TABLE><BR><BR>';
167 <%= if ( @svc_port ) {
168 $OUT.= '<FONT SIZE="4">Bandwidth Graphs</FONT><BR><BR>
169 <script type="text/javascript">
170 function preset_range(start,end,prefix){
171 document.getElementById(prefix+\'_start\').value = start;
172 document.getElementById(prefix+\'_end\').value = end;
175 <TABLE BGCOLOR="#cccccc">
177 <TH ALIGN="left">Service</TH>
188 my($start,$end,$label,$date_format,$prefix) = (shift,shift,shift,shift,shift);
189 $start = Date::Format::time2str($date_format,$start);
190 $end = Date::Format::time2str($date_format,$end);
191 return '<A HREF="javascript:void(0);" onclick="preset_range(\''
192 .$start.'\',\''.$end.'\',\''.$prefix.'\')">'.$label.'</A>';
195 foreach my $svc_port ( @svc_port ) {
196 $svcnum = $svc_port->{'svcnum'};
198 $default_start = $default_end-86400;
200 $OUT .= '<TR><TD>'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'</TD>';
201 $OUT .= qq! <TD><FORM ACTION="$url" METHOD="GET">
202 <INPUT TYPE="hidden" name="svcnum" value="$svcnum">
203 <INPUT TYPE="hidden" name="action" value="view_port_graph"> !;
204 $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum)
205 .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum)
206 .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum)
207 .' | '.preset_range($default_end-86400*365,$default_end,'Last Year',$date_format,$svcnum);
210 Start Date <INPUT TYPE="TEXT" id="${svcnum}_start" name="${svcnum}_start" SIZE="10" MAXLENGTH="10">
211 End Date <INPUT TYPE="TEXT" id="${svcnum}_end" name="${svcnum}_end" SIZE="10" MAXLENGTH="10">
213 <INPUT TYPE="submit" value="Display"> !;
215 $OUT .= '</FORM></TD></TR>';
219 <%= scalar(@svc_port) ? '</TABLE><BR><BR>' : '' %>
223 <%= include('footer') %>