obtain a new descriptor for the lock in kids, this should fix locking problems
[freeside.git] / httemplate / browse / part_svc.cgi
index 250b1ff..fd9ef3c 100755 (executable)
@@ -8,9 +8,25 @@ if ( $cgi->param('showdisabled') ) {
   %search = ( 'disabled' => '' );
 }
 
-my @part_svc = qsearch('part_svc', \%search );
+my @part_svc =
+  sort { $a->getfield('svcpart') <=> $b->getfield('svcpart') }
+    qsearch('part_svc', \%search );
 my $total = scalar(@part_svc);
 
+my %num_active_cust_svc = ();
+if ( $cgi->param('active') ) {
+  my $active_sth = dbh->prepare(
+    'SELECT COUNT(*) FROM cust_svc WHERE svcpart = ?'
+  ) or die dbh->errstr;
+  foreach my $part_svc ( @part_svc ) {
+    $active_sth->execute($part_svc->svcpart) or die $active_sth->errstr;
+    $num_active_cust_svc{$part_svc->svcpart} =
+      $active_sth->fetchrow_arrayref->[0];
+  }
+  @part_svc = sort { $num_active_cust_svc{$b->svcpart} <=>
+                     $num_active_cust_svc{$a->svcpart}     } @part_svc;
+}
+
 %>
 <%= header('Service Definition Listing', menubar( 'Main Menu' => $p) ) %>
 
@@ -21,8 +37,18 @@ function part_export_areyousure(href) {
 }
 </SCRIPT>
 
-    Services are items you offer to your customers.<BR><BR>
-<%= $total %> services
+    Service definitions are the templates for items you offer to your customers.<BR><BR>
+
+<FORM METHOD="POST" ACTION="<%= $p %>edit/part_svc.cgi">
+<A HREF="<%= $p %>edit/part_svc.cgi"><I>Add a new service definition</I></A><% if ( @part_svc ) { %>&nbsp;or&nbsp;<SELECT NAME="clone"><OPTION></OPTION>
+<% foreach my $part_svc ( @part_svc ) { %>
+  <OPTION VALUE="<%= $part_svc->svcpart %>"><%= $part_svc->svc %></OPTION>
+<% } %>
+</SELECT><INPUT TYPE="submit" VALUE="Clone existing service">
+<% } %>
+</FORM><BR>
+
+<%= $total %> service definitions
 <%= $cgi->param('showdisabled')
       ? do { $cgi->param('showdisabled', 0);
              '( <a href="'. $cgi->self_url. '">hide disabled services</a> )'; }
@@ -33,14 +59,15 @@ function part_export_areyousure(href) {
   <TR>
     <TH COLSPAN=<%= $cgi->param('showdisabled') ? 2 : 3 %>>Service</TH>
     <TH>Table</TH>
+<% if ( $cgi->param('active') ) { %>
+    <TH><FONT SIZE=-1>Customer<BR>Services</FONT></TH>
+<% } %>
     <TH>Export</TH>
     <TH>Field</TH>
     <TH COLSPAN=2>Modifier</TH>
   </TR>
 
-<% foreach my $part_svc ( sort {
-     $a->getfield('svcpart') <=> $b->getfield('svcpart')
-   } @part_svc ) {
+<% foreach my $part_svc ( @part_svc ) {
      my $hashref = $part_svc->hashref;
      my $svcdb = $hashref->{svcdb};
      my @dfields = fields($svcdb);
@@ -64,37 +91,23 @@ function part_export_areyousure(href) {
       <%= $hashref->{svc} %></A></TD>
     <TD ROWSPAN=<%= $rowspan %>>
       <%= $hashref->{svcdb} %></TD>
+<% if ( $cgi->param('active') ) { %>
+    <TD ROWSPAN=<%= $rowspan %>>
+      <FONT COLOR="#00CC00"><B><%= $num_active_cust_svc{$hashref->{svcpart}} %></B></FONT>&nbsp;<A HREF="<%=$p%>search/<%= $hashref->{svcdb} %>.cgi?svcpart=<%= $hashref->{svcpart} %>">active</A>
+    </TD>
+<% } %>
     <TD ROWSPAN=<%= $rowspan %>><%= itable() %>
 <%
-  my @part_export = qsearch('part_export', { svcpart => $part_svc->svcpart } );
-  foreach my $part_export ( @part_export ) {
+#  my @part_export =
+map { qsearchs('part_export', { exportnum => $_->exportnum } ) } qsearch('export_svc', { svcpart => $part_svc->svcpart } ) ;
+  foreach my $part_export (
+    map { qsearchs('part_export', { exportnum => $_->exportnum } ) } 
+      qsearch('export_svc', { svcpart => $part_svc->svcpart } )
+  ) {
 %>
       <TR>
-        <TD><%= $part_export->exporttype %> to <%= $part_export->machine %> (<A HREF="<%= $p %>edit/part_export.cgi?<%= $part_export->exportnum %>">edit</A>&nbsp;|&nbsp;<A HREF="javascript:part_export_areyousure('<%= $p %>misc/delete-part_export.cgi?<%= $part_export->exportnum %>')">delete</A>)</TD>
-        <TD>
-          <%= itable() %>
-          <% my %opt = $part_export->options;
-             foreach my $opt ( keys %opt ) { %>
-               <TR><TD><%= $opt %></TD><TD><%= $opt{$opt} %></TD></TR>
-          <% } %>
-          </TABLE>
-        </TD>
+        <TD><A HREF="<%= $p %>edit/part_export.cgi?<%= $part_export->exportnum %>"><%= $part_export->exportnum %>:&nbsp;<%= $part_export->exporttype %>&nbsp;to&nbsp;<%= $part_export->machine %></A></TD></TR>
 <%  } %>
-      </TR><TR><TD COLSPAN=2><A HREF="<%= $p %>edit/part_export.cgi?new_with_svcpart=<%= $part_svc->svcpart %>"><I>Add a new export</I></A></TD></TR>
-<% if (@part_export) { %>
-      <TR><TD COLSPAN=2>
-        <FORM METHOD="POST" ACTION="<%= $p %>edit/part_export.cgi">
-        <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%= $part_svc->svcpart %>">
-        <SELECT NAME="clone"><OPTION></OPTION>
-<%   foreach my $part_export ( @part_export ) { %>
-          <OPTION VALUE="<%= $part_export->exportnum %>">
-            <%= $part_export->exporttype %> to <%= $part_export->machine %>
-          </OPTION>
-<%   } %>
-        </SELECT>
-        <INPUT TYPE="submit" VALUE="clone existing export">
-        </FORM></TD></TR>
-<% } %>
       </TABLE></TD>
 
 <%   my($n1)='';
@@ -113,10 +126,6 @@ function part_export_areyousure(href) {
 %>
   </TR>
 <% } %>
-
-  <TR>
-    <TD COLSPAN=<%= $cgi->param('showdisabled') ? 7 : 8 %>><A HREF="<%= $p %>edit/part_svc.cgi"><I>Add a new service definition</I></A></TD>
-  </TR>
 </TABLE>
 </BODY>
 </HTML>