don't check overlimit status in bulk service view, RT#15154
[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 $part_svc ( $cust_pkg->part_svc ) {
14
15 %    my $num_cust_svc = $cust_pkg->num_cust_svc( $part_svc->svcpart );
16
17 %    if ( $opt{'cust_pkg-large_pkg_size'} > 0 and
18 %         $opt{'cust_pkg-large_pkg_size'} <= $num_cust_svc ) { # summarize
19 %
20       <TR>
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>
25         </TD>
26         <TD ALIGN="left" VALIGN="top">
27         <A HREF="<% $href %>"><B>(<% mt("view all [_1]", $num_cust_svc) |h %>)</B></A>
28         </TD>
29       </TR>
30 %     my $hint = $hints{$part_svc->svcdb};
31 %     if ( $hint ) {
32       <TR>
33         <TD></TD>
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>
42         </TD>
43       </TR>
44 %     } #$hint
45 %
46 %    } else { # don't summarize
47 %
48 %      foreach my $cust_svc ( @{ $part_svc->cust_pkg_svc } ) {
49 %        if ( $cust_pkg->getfield('cancel') > 0 ) {
50       <& /elements/tr-cust_svc_cancel.html,
51                   %opt,
52                   'part_svc' => $part_svc,
53                   'cust_svc' => $cust_svc,
54                   'cust_pkg' => $cust_pkg,
55        &>
56 %        }
57 %        else {
58       <& /elements/tr-cust_svc.html,
59                   %opt,
60                   'part_svc' => $part_svc,
61                   'cust_svc' => $cust_svc,
62                   'cust_pkg' => $cust_pkg,
63        &>
64 %       } #if cancel > 0
65 %     } #foreach $cust_svc
66 %   } #if summarizing
67 %   if (    ! $cust_pkg->get('cancel')
68 %        && $curuser->access_right('Provision customer service') 
69 %        && $part_svc->num_avail
70 %      ) {
71
72       <TR>
73         <TD COLSPAN=3 ALIGN="center" STYLE="padding-bottom:4px;padding-top:0px">
74           <B><% svc_provision_link($cust_pkg, $part_svc, \%opt, $curuser) %></B>
75 %        if ( $curuser->access_right('Bulk provision customer service') 
76 %               && $part_svc->svcdb eq 'svc_phone' ) {
77 %          if ( $part_svc->num_avail > 5 ) {
78 %             local $opt{'bulk'} = 1;
79               <BR><% svc_provision_link($cust_pkg, $part_svc, \%opt, $curuser) %>
80 %           }
81 %           #XXX if there's orders for this customer {
82               <BR><A HREF="<%$p%>browse/did_order.html?custnum=<%$cust_pkg->custnum%>"><% mt('Browse Received DID Inventory') |h %></A> 
83 %           #}
84 %       }
85         </TD>
86       </TR>
87
88 %   } 
89
90 % } 
91
92     </TABLE>
93   </TD>
94
95 <%init>
96
97 my %opt = @_;
98
99 my $bgcolor  = $opt{'bgcolor'};
100 my $cust_pkg = $opt{'cust_pkg'};
101 my $part_pkg = $opt{'part_pkg'};
102 my $curuser  = $FS::CurrentUser::CurrentUser;
103
104 my $conf = new FS::Conf;
105
106 sub svc_provision_link {
107   my ($cust_pkg, $part_svc, $opt, $curuser) = @_;
108
109   ( my $svc_nbsp = $part_svc->svc ) =~ s/\s+/ /g;
110   my $num_avail = $part_svc->num_avail;
111
112   my $query = "pkgnum=". $cust_pkg->pkgnum. ';'.
113               "svcpart=". $part_svc->svcpart;
114   $query .= ';bulk=1' if $opt->{bulk};
115
116   my $url;
117   if ( $part_svc->svcdb eq 'svc_external' #could be generalized
118        && $opt->{'svc_external-skip_manual'}
119   ) {
120     $url = "${p}edit/process/". $part_svc->svcdb. ".cgi?$query";
121   } else {
122     $url = svc_url(
123                     'm'        => $m,
124                     'action'   => 'edit',
125                     'part_svc' => $part_svc, 
126                     'query'    => $query,
127                   );
128   }
129
130   my $action = $opt->{bulk} ? 'Bulk provision' : 'Provision';
131
132   my $link = qq!<A CLASS="provision" HREF="$url">!.
133              emt("$action [_1] ([_2])",$svc_nbsp,$num_avail).'</A>';
134   if ( $opt->{'legacy_link'}
135        && $curuser->access_right('View/link unlinked services')
136      )
137   {
138     $link .= '<BR>'.
139              qq!<A CLASS="provision" HREF="${p}misc/link.cgi?$query">!.
140             emt("Link to legacy [_1] ([_2])",$svc_nbsp,$num_avail).'</A>';
141   }
142   $link;
143 }
144
145 my %hints = (
146 svc_acct      => emt('(user or email)'),
147 svc_domain    => emt('(domain)'),
148 svc_broadband => emt('(ip or mac)'),
149 svc_forward   => emt('(email)'),
150 svc_phone     => emt('(phone)'),
151 svc_pbx       => emt('(phone)'),
152 );
153
154 </%init>