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 = '';
13 % foreach my $part_svc ( $cust_pkg->part_svc ) {
15 % my $num_cust_svc = $cust_pkg->num_cust_svc( $part_svc->svcpart );
17 % if ( $opt{'cust_pkg-large_pkg_size'} > 0 and
18 % $opt{'cust_pkg-large_pkg_size'} <= $num_cust_svc ) {
21 <TD ALIGN="right" VALIGN="top">
22 % my $href="${p}search/cust_pkg_svc.html?svcpart=".$part_svc->svcpart.
23 % ";pkgnum=".$cust_pkg->pkgnum;
24 <A HREF="<% $href %>"><% $part_svc->svc %></A>
26 <TD ALIGN="left" VALIGN="top">
27 <A HREF="<% $href %>"><B>(<% mt("view all [_1]", $num_cust_svc) |h %>)</B></A>
30 % my $hint = $hints{$part_svc->svcdb};
34 <TD ALIGN="left" VALIGN="top">
35 <FORM name="svcpart<%$part_svc->svcpart%>_search" STYLE="display:inline"
36 ACTION="<%$p%>search/cust_pkg_svc.html" METHOD="GET">
37 <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%$part_svc->svcpart%>">
38 <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%$cust_pkg->pkgnum%>">
39 <INPUT TYPE="text" NAME="search_svc"
40 onfocus="clearhint_search_cust_svc(this, '<%$hint%>')" VALUE="<%$hint%>">
41 <INPUT TYPE="submit" VALUE="Search"></FORM>
46 % else { # don't summarize
47 % foreach my $cust_svc ( @{ $part_svc->cust_pkg_svc } ) {
48 % if ( $cust_pkg->getfield('cancel') > 0 ) {
49 <& /elements/tr-cust_svc_cancel.html,
51 'part_svc' => $part_svc,
52 'cust_svc' => $cust_svc,
53 'cust_pkg' => $cust_pkg,
57 <& /elements/tr-cust_svc.html,
59 'part_svc' => $part_svc,
60 'cust_svc' => $cust_svc,
61 'cust_pkg' => $cust_pkg,
64 % } #foreach $cust_svc
66 % if ( ! $cust_pkg->get('cancel')
67 % && $curuser->access_right('Provision customer service')
68 % && $part_svc->num_avail
72 <TD COLSPAN=3 ALIGN="center" STYLE="padding-bottom:4px;padding-top:0px">
73 <B><% svc_provision_link($cust_pkg, $part_svc, \%opt, $curuser) %></B>
74 % if ( $curuser->access_right('Bulk provision customer service')
75 % && $part_svc->svcdb eq 'svc_phone' ) {
76 <BR><A HREF="<%$p%>browse/did_order.html?custnum=<%$cust_pkg->custnum%>"><% mt('Browse Received DID Inventory') |h %></A>
92 my $bgcolor = $opt{'bgcolor'};
93 my $cust_pkg = $opt{'cust_pkg'};
94 my $part_pkg = $opt{'part_pkg'};
95 my $curuser = $FS::CurrentUser::CurrentUser;
97 my $conf = new FS::Conf;
99 sub svc_provision_link {
100 my ($cust_pkg, $part_svc, $opt, $curuser) = @_;
101 ( my $svc_nbsp = $part_svc->svc ) =~ s/\s+/ /g;
102 my $num_avail = $part_svc->num_avail;
103 my $pkgnum_svcpart = "pkgnum=". $cust_pkg->pkgnum. ';'.
104 "svcpart=". $part_svc->svcpart;
106 if ( $part_svc->svcdb eq 'svc_external' #could be generalized
107 && $opt->{'svc_external-skip_manual'}
109 $url = "${p}edit/process/". $part_svc->svcdb. ".cgi?$pkgnum_svcpart";
114 'part_svc' => $part_svc,
115 'query' => $pkgnum_svcpart,
119 my $link = qq!<A CLASS="provision" HREF="$url">!.
120 emt("Provision [_1] ([_2])",$svc_nbsp,$num_avail).'</A>';
121 if ( $opt->{'legacy_link'}
122 && $curuser->access_right('View/link unlinked services')
126 qq!<A CLASS="provision" HREF="${p}misc/link.cgi?!.
127 qq!$pkgnum_svcpart">!.
128 emt("Link to legacy [_1] ([_2])",$svc_nbsp,$num_avail).'</A>';
134 svc_acct => emt('(user or email)'),
135 svc_domain => emt('(domain)'),
136 svc_broadband => emt('(ip or mac)'),
137 svc_forward => emt('(email)'),
138 svc_phone => emt('(phone)'),
139 svc_pbx => emt('(phone)'),