so Search.tsf and Search.rdf work
[freeside.git] / httemplate / edit / part_pkg.cgi
index 546e071..fd2aa2b 100755 (executable)
@@ -20,11 +20,11 @@ if ( $cgi->param('error') ) {
     map { $_, scalar($cgi->param($_)) } fields('part_pkg')
   } );
 }
+my $clone_part_pkg = '';
 if ( $cgi->param('clone') ) {
-  $action='Custom Pricing';
-  my $old_part_pkg =
-    qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
-  $part_pkg ||= $old_part_pkg->clone;
+  $action = 'Custom Pricing';
+  $clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
+  $part_pkg ||= $clone_part_pkg->clone;
   $part_pkg->disabled('Y');
 } elsif ( $query && $query =~ /^(\d+)$/ ) {
   $part_pkg ||= qsearchs('part_pkg',{'pkgpart'=>$1});
@@ -93,7 +93,12 @@ Package information
       <INPUT TYPE="text" NAME="comment" SIZE=32 VALUE="<%=$part_pkg->comment%>">
     </TD>
   </TR>
-
+  <TR>
+    <TD ALIGN="right">Promotional code</TD>
+    <TD>
+      <INPUT TYPE="text" NAME="promo_code" SIZE=32 VALUE="<%=$part_pkg->promo_code%>">
+    </TD>
+  </TR>
   <TR>
     <TD ALIGN="right">Disable new orders</TD>
     <TD>
@@ -171,7 +176,16 @@ END
 my @fixups = ();
 my $count = 0;
 my $columns = 3;
-my @part_svc = qsearch( 'part_svc', { 'disabled' => '' } );
+my @part_svc = qsearch(
+  'part_svc',
+  {},
+  '',
+  "WHERE disabled IS NULL OR disabled = ''
+      OR 0 < ( SELECT quantity FROM pkg_svc
+                WHERE pkg_svc.svcpart = part_svc.svcpart
+                  AND pkgpart = 72
+             )"
+);
 foreach my $part_svc ( @part_svc ) {
   my $svcpart = $part_svc->svcpart;
   my $pkgpart = $cgi->param('clone') || $part_pkg->pkgpart;
@@ -201,7 +215,9 @@ foreach my $part_svc ( @part_svc ) {
       print '></TD>';
     }
     print qq!<TD><A HREF="part_svc.cgi?!,$part_svc->svcpart,
-          qq!">!, $part_svc->getfield('svc'), "</A></TD></TR>";
+          qq!">!, $part_svc->getfield('svc'), '</A>';
+    print ' (DISABLED)' if $part_svc->disabled =~ /^Y/i;
+    print '</TD></TR>';
 #    print "</TABLE></TD><TD>$thead" if ++$count == int(scalar(@part_svc) / 2);
     $count+=1;
     foreach ( 1 .. $columns-1 ) {
@@ -230,7 +246,8 @@ print '<INPUT TYPE="hidden" NAME="pkgpart" VALUE="'. $part_pkg->pkgpart. '">';
 tie my %plans, 'Tie::IxHash', %{ FS::part_pkg::plan_info() };
 
 my %plandata = map { /^(\w+)=(.*)$/; ( $1 => $2 ); }
-                    split("\n", $part_pkg->plandata );
+                    split("\n", ($clone_part_pkg||$part_pkg)->plandata );
+#warn join("\n", map { "$_: $plandata{$_}" } keys %plandata ). "\n";
 
 tie my %options, 'Tie::IxHash', map { $_=>$plans{$_}->{'name'} } keys %plans;
 
@@ -256,7 +273,9 @@ my $widget = new HTML::Widgets::SelectLayers(
   'options'        => \%options,
   'form_name'      => 'dummy',
   'form_action'    => 'process/part_pkg.cgi',
-  'form_text'      => [ qw(pkg comment clone pkgnum pkgpart), @fixups ],
+  'form_text'      => [ qw(pkg comment promo_code clone pkgnum pkgpart),
+                        @fixups
+                      ],
   'form_checkbox'  => [ qw(setuptax recurtax disabled) ],
   'form_radio'     => \@form_radio,
   'form_select'    => \@form_select,
@@ -294,8 +313,17 @@ my $widget = new HTML::Widgets::SelectLayers(
                      ? $plandata{$field}
                      : $href->{$field}{'default'} ).
                  qq!" onChange="fchanged(this)">!;
-      } elsif ( $href->{$field}{'type'} eq 'select_multiple' ) {
-        $html .= qq!<SELECT MULTIPLE NAME="$field" onChange="fchanged(this)">!;
+      } elsif ( $href->{$field}{'type'} eq 'checkbox' ) {
+        $html .= qq!<INPUT TYPE="checkbox" NAME="$field" VALUE=1 !.
+                 ( exists($plandata{$field}) && $plandata{$field}
+                   ? ' CHECKED'
+                   : ''
+                 ). '>';
+      } elsif ( $href->{$field}{'type'} =~ /^select/ ) {
+        $html .= '<SELECT';
+        $html .= ' MULTIPLE'
+          if $href->{$field}{'type'} eq 'select_multiple';
+        $html .= qq! NAME="$field" onChange="fchanged(this)">!;
         foreach my $record (
           qsearch( $href->{$field}{'select_table'},
                    $href->{$field}{'select_hash'}   )