This commit was manufactured by cvs2svn to create branch
[freeside.git] / httemplate / view / cust_main / packages / services.html
1 % ###
2 % # Services
3 % ###
4
5   <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
6     <TABLE CLASS="inv" BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%">
7     <SCRIPT TYPE="text/javascript">
8 function clearhint_search_cust_svc(obj, str) {
9   if (obj.value == str) obj.value = '';
10 }
11     </SCRIPT>
12
13 %  #foreach my $svcpart (sort {$a->{svcpart} <=> $b->{svcpart}} @{$pkg->{svcparts}}) {
14 %  foreach my $part_svc ( $cust_pkg->part_svc ) {
15
16 %    if ( $opt{'cust_pkg-large_pkg_size'} > 0 and
17 %         $opt{'cust_pkg-large_pkg_size'} <= $cust_pkg->num_svcs ) {
18 %      # summarize
19       <TR>
20         <TD ALIGN="center" VALIGN="top">
21 %       my $href="${p}search/cust_pkg_svc.html?svcpart=".$part_svc->svcpart.
22 %          ";pkgnum=".$cust_pkg->pkgnum;
23         <A HREF="<% $href %>"><% $part_svc->svc %></A>&nbsp;
24         <A HREF="<% $href %>"><B>(view all <% $cust_pkg->num_svcs %>)</B></A>
25 %     my $hint = $hints{$part_svc->svcdb};
26 %     if ( $hint ) {
27         <BR>
28         <FORM name="svcpart<%$part_svc->svcpart%>_search" STYLE="display:inline"
29         ACTION="<%$p%>search/cust_pkg_svc.html" METHOD="GET">
30         <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%$part_svc->svcpart%>">
31         <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%$cust_pkg->pkgnum%>">
32         <INPUT TYPE="text" NAME="search_svc"
33         onfocus="clearhint_search_cust_svc(this, '<%$hint%>')" VALUE="<%$hint%>">
34         <INPUT TYPE="submit" VALUE="Search"></FORM>
35 %     } #$hint
36         </TD>
37       </TR>
38 %    }
39 %    else {
40 %      foreach my $cust_svc ( @{ $part_svc->cust_pkg_svc } ) {
41
42       <TR>
43         <TD ALIGN="right" VALIGN="top"><% FS::UI::Web::svc_link($m, $part_svc, $cust_svc) %></TD>
44         <TD STYLE="padding-bottom:0px"><B><% FS::UI::Web::svc_label_link($m, $part_svc, $cust_svc) %></B></TD>
45         <TD><% FS::UI::Web::svc_export_links($m, $part_svc, $cust_svc) %></TD>
46       </TR>
47
48       <TR>
49         <TD ALIGN="right" COLSPAN="3" VALIGN="top" STYLE="padding-bottom:1px;padding-top:0px"><FONT SIZE="-2" COLOR="#FFD000">
50
51             <% $cust_svc->overlimit ? "Overlimit: ". time2str('%b %o %Y' . ($opt{'cust_pkg-display_times'} ? ' %l:%M %P' : ''), $cust_svc->overlimit) : '' %>
52           </FONT></TD>
53       </TR>
54
55       <TR>
56         <TD ALIGN="right" VALIGN="top" STYLE="padding-bottom:5px;padding-top:0px"><FONT SIZE="-2">
57
58 %         if ( $curuser->access_right('Recharge customer service')
59 %              && $part_svc->svcdb eq 'svc_acct'
60 %              && (    $cust_svc->svc_x->seconds    ne ''
61 %                   || $cust_svc->svc_x->upbytes    ne ''
62 %                   || $cust_svc->svc_x->downbytes  ne ''
63 %                   || $cust_svc->svc_x->totalbytes ne ''
64 %                 )
65 %         ) { 
66             (&nbsp;<%svc_recharge_link($cust_svc)%>&nbsp;)
67 %         }
68           </FONT></TD>
69
70           <TD ALIGN="right" VALIGN="top" STYLE="padding-bottom:5px;padding-top:0px">
71
72 %           my $ip_addr = $cust_svc->svc_x->ip_addr;
73
74 %           if ( $part_svc->svcdb eq 'svc_broadband' ) {
75               <FONT SIZE="-1" STYLE="float:left">(&nbsp;<% include('/elements/popup_link-ping.html', 'ip'=> $ip_addr ) %>&nbsp;)</FONT>
76
77 %           }
78
79 %           my $manage_link = $opt{'svc_broadband-manage_link'};
80 %           if ( $manage_link && $part_svc->svcdb eq 'svc_broadband' ) {
81 %             my $svc_manage_link = eval(qq("$manage_link"));
82               <FONT SIZE="-1" STYLE="float:left">(&nbsp;<A HREF="<% $svc_manage_link %>">Manage Device</A>&nbsp;)</FONT>
83
84 %           }
85
86 %           if ( $curuser->access_right('Unprovision customer service') ) { 
87               <FONT SIZE="-2">(&nbsp;<%svc_unprovision_link($cust_svc)%>&nbsp;)</FONT>
88 %           } 
89
90 %           if ( $part_svc->svcdb eq 'svc_pbx' && $opt{'maestro-status_test'} ){
91               <FONT SIZE="-2">(&nbsp;<A HREF="<% $p %>misc/maestro-customer_status-test.html?<% $cust_pkg->custnum.'+'.$cust_svc->svcnum %>">Test maestro status</A>&nbsp;)</FONT>
92 %           } 
93
94           </TD>
95         </TR>
96 %     } #foreach $cust_svc
97 %   }
98
99 %   if (    ! $cust_pkg->get('cancel')
100 %        && $curuser->access_right('Provision customer service') 
101 %        && $part_svc->num_avail
102 %      ) {
103
104       <TR>
105         <TD COLSPAN=3 ALIGN="center" STYLE="padding-bottom:4px;padding-top:0px">
106           <B><% svc_provision_link($cust_pkg, $part_svc, \%opt, $curuser) %></B>
107         </TD>
108       </TR>
109
110 %   } 
111
112 % } 
113
114     </TABLE>
115   </TD>
116
117 <%init>
118
119 my %opt = @_;
120
121 my $bgcolor  = $opt{'bgcolor'};
122 my $cust_pkg = $opt{'cust_pkg'};
123 my $part_pkg = $opt{'part_pkg'};
124 my $curuser  = $FS::CurrentUser::CurrentUser;
125
126 my $conf = new FS::Conf;
127
128 sub svc_provision_link {
129   my ($cust_pkg, $part_svc, $opt, $curuser) = @_;
130   ( my $svc_nbsp = $part_svc->svc ) =~ s/\s+/&nbsp;/g;
131   my $num_avail = $part_svc->num_avail;
132   my $pkgnum_svcpart = "pkgnum=". $cust_pkg->pkgnum. ';'.
133                        "svcpart=". $part_svc->svcpart;
134   my $url;
135   if ( $part_svc->svcdb eq 'svc_external' #could be generalized
136        && $opt->{'svc_external-skip_manual'}
137   ) {
138     $url = "${p}edit/process/". $part_svc->svcdb. ".cgi?$pkgnum_svcpart";
139   } else {
140     $url = svc_url(
141                     'm'        => $m,
142                     'action'   => 'edit',
143                     'part_svc' => $part_svc, 
144                     'query'    => $pkgnum_svcpart,
145                   );
146     #$url = "${p}edit/$svcpart->{svcdb}.cgi?$pkgnum_svcpart";
147   }
148
149   my $link = qq!<A CLASS="provision" HREF="$url">!.
150              "Provision&nbsp;$svc_nbsp&nbsp;($num_avail)</A>";
151   if ( $opt->{'legacy_link'}
152        && $curuser->access_right('View/link unlinked services')
153      )
154   {
155     $link .= '<BR>'.
156              qq!<A CLASS="provision" HREF="${p}misc/link.cgi?!.
157              qq!$pkgnum_svcpart">!.
158             "Link&nbsp;to&nbsp;legacy&nbsp;$svc_nbsp&nbsp;($num_avail)</A>";
159   }
160   $link;
161 }
162
163 sub svc_unprovision_link {
164   my $cust_svc = shift or return '';
165   qq!<A HREF="javascript:areyousure('${p}misc/unprovision.cgi?!. $cust_svc->svcnum.
166   qq!', 'Permanently unprovision and delete this service?')">Unprovision</A>!;
167 }
168
169 my %hints = (
170 svc_acct      => '(user or email)',
171 svc_domain    => '(domain)',
172 svc_broadband => '(ip or mac)',
173 svc_forward   => '(email)',
174 svc_phone     => '(phone)',
175 svc_pbx       => '(phone)',
176 );
177
178 </%init>