stray closing /TABLE in the no-ticket case
[freeside.git] / httemplate / edit / cust_pkg.cgi
index f927e10..7ffbb1f 100755 (executable)
@@ -7,7 +7,6 @@
 <INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
 
 %#current packages
-%my @cust_pkg = qsearch('cust_pkg', { 'custnum' => $custnum, 'cancel' => '' } );
 %if (@cust_pkg) {
 
   Current packages - select to remove (services are moved to a new package below)
     </TR>
   <BR><BR>
 %
-%
-%  foreach ( sort {     $all_pkg{ $a->getfield('pkgpart') }
-%                   cmp $all_pkg{ $b->getfield('pkgpart') }
-%                 }
-%                 @cust_pkg
-%          )
-%  {
+%  foreach ( @main_pkgs ) {
 %    my($pkgnum,$pkgpart)=( $_->getfield('pkgnum'), $_->getfield('pkgpart') );
 %    my $checked = $remove_pkg{$pkgnum} ? ' CHECKED' : '';
 %
     <TR>
       <TD><INPUT TYPE="checkbox" NAME="remove_pkg" VALUE="<% $pkgnum %>"<% $checked %>></TD>
       <TD ALIGN="right"><% $pkgnum %>:</TD>
-      <TD><% $all_pkg{$pkgpart} %> - <% $all_comment{$pkgpart} %></TD>
+      <TD><% $all_pkg{$pkgpart} |h %> - <% $all_comment{$pkgpart} |h %></TD>
+    </TR>
+%   foreach my $supp_pkg ( @{ $supp_pkgs_of{$pkgnum} } ) {
+    <TR>
+      <TD></TD>
+      <TD></TD>
+      <TD>+ <% $all_pkg{$supp_pkg->pkgpart} |h %> - <% $all_comment{$supp_pkg->pkgpart} |h %></TD>
     </TR>
+%   }
 % } 
 
 
 
 Order new packages
 <BR><BR>
-%
+
 %my $cust_main = qsearchs('cust_main',{'custnum'=>$custnum});
 %my $agent = qsearchs('agent',{'agentnum'=> $cust_main->agentnum });
 %
-%my %agent_pkgs = map { ( $_->pkgpart , $all_pkg{$_->pkgpart} ) }
-%                     qsearch('type_pkgs',{'typenum'=> $agent->typenum });
+%my %agent_pkgs = map { ( $_->pkgpart => $all_pkg{$_->pkgpart} ) }
+%                   ( qsearch('type_pkgs',{ typenum  => $agent->typenum      }),
+%                     qsearch('part_pkg', { agentnum => $cust_main->agentnum }),
+%                   );
 %
 %my $count = 0;
 %my $pkgparts = 0;
-%
-
 
 <TABLE>
   <TR STYLE="background-color: #cccccc;">
@@ -79,7 +79,7 @@ Order new packages
       <INPUT TYPE="text" NAME="<% "pkg$pkgpart" %>" VALUE="<% $value %>" SIZE="2" MAXLENGTH="2">
     </TD>
     <TD ALIGN="right"><% $pkgpart %>:</TD>
-    <TD><% $pkg{$pkgpart} %> - <% $comment{$pkgpart}%></TD>
+    <TD><% $pkg{$pkgpart} |h %> - <% $comment{$pkgpart} |h %></TD>
   </TR>
 %
 %  $count ++ ;
@@ -128,10 +128,10 @@ my %all_comment = ();
 #}
 foreach (qsearch('part_pkg', {} )) {
   $all_pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg');
-  $all_comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment');
+  $all_comment{ $_ -> getfield('pkgpart') } = $_->custom_comment;
   next if $_->disabled;
   $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg');
-  $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment');
+  $comment{ $_ -> getfield('pkgpart') } = $_->custom_comment;
 }
 
 my($custnum, %remove_pkg);
@@ -147,4 +147,24 @@ if ( $cgi->param('error') ) {
 
 my $p1 = popurl(1);
 
+my @cust_pkg = qsearch('cust_pkg', { 'custnum' => $custnum, 'cancel' => '' } );
+my @main_pkgs;
+my %supp_pkgs_of; # main pkgnum => arrayref of cust_pkgs
+
+
+foreach my $cust_pkg
+  ( sort { $all_pkg{ $a->pkgpart } cmp $all_pkg{ $b->getfield('pkgpart') } }
+    @cust_pkg
+  )
+  # XXX does not properly handle recursive supplemental links
+{
+  if ( my $main_pkgnum = $cust_pkg->main_pkgnum ) {
+    $supp_pkgs_of{$main_pkgnum} ||= [];
+    push @{ $supp_pkgs_of{$main_pkgnum} }, $cust_pkg;
+  } else {
+    push @main_pkgs, $cust_pkg;
+    $supp_pkgs_of{$cust_pkg->pkgnum} ||= [];
+  }
+}
+
 </%init>