1 % if ( $part_svc->part_export_usage ) {
6 % #false laziness w/httemplate/edit/part_pkg... this stuff doesn't really
8 % %plandata = map { /^(\w+)=(.*)$/; ( $1 => $2 ); }
9 % split("\n", $cust_pkg->part_pkg->plandata );
11 % $last_bill = $cust_pkg->last_bill;
17 % my $seconds = $svc->seconds_since_sqlradacct( $last_bill, time );
18 % my $hour = int($seconds/3600);
19 % my $min = int( ($seconds%3600) / 60 );
20 % my $sec = $seconds%60;
22 % my $input = $svc->attribute_since_sqlradacct(
23 % $last_bill, time, 'AcctInputOctets'
25 % my $output = $svc->attribute_since_sqlradacct(
26 % $last_bill, time, 'AcctOutputOctets'
29 % my $last_mac = $svc->attribute_last_sqlradacct( 'CallingStationId' );
30 % if ( $last_mac =~ /^\s*(([\dA-F]{2}[\-:]){5}[\dA-F]{2})/i
31 % and my $vendor = Net::MAC::Vendor::lookup($1)
34 % $last_mac .= ' ('. $vendor->[0]. ')';
38 RADIUS session information<BR>
39 <% ntable('#cccccc',2) %>
40 <TR><TD BGCOLOR="#ffffff">
43 Online <B><% $hour %></B>h <B><% $min %></B>m <B><% $sec %></B>s
50 since last bill (<% time2str('%a %b %o %Y', $last_bill) %>)
51 % if ( length($plandata{recur_included_hours}) ) {
53 - <% $plandata{recur_included_hours} %> total hours in plan
59 (no billing cycle available for unaudited account)<BR>
63 Upload: <B><% sprintf("%.3f", $input) %></B> gigabytes<BR>
64 Download: <B><% sprintf("%.3f", $output) %></B> gigabytes<BR>
65 % if ( $svc->table eq 'svc_acct' ) {
66 Last Login: <B><% $svc->last_login_text %></B><BR>
68 % if ( length($last_mac) ) {
69 Last Source or MAC: <B><% $last_mac %></B><BR>
71 % my $href = qq!<A HREF="${p}search/sqlradius.cgi?svcnum=!. $svc->svcnum;
74 <% $href %>;begin=<% $last_bill %>">this billing cycle</A>
75 | <% $href %>;begin=<% time-15552000 %>">past six months</A>
76 | <% $href %>">all sessions</A>
78 </TD></TR></TABLE><BR>
84 my $svc = $opt{'svc'};
85 my $part_svc = $opt{'part_svc'};
86 my $cust_pkg = $opt{'cust_pkg'};