This commit was manufactured by cvs2svn to create tag 'freeside_2_1_1'.
[freeside.git] / httemplate / browse / part_pkg.cgi
index 886c6c8..3c3016b 100755 (executable)
@@ -4,11 +4,11 @@
                  'html_posttotal'        => $html_posttotal,
                  'name'                  => 'package definitions',
                  'disableable'           => 1,
-                 'disabled_statuspos'    => 3,
+                 'disabled_statuspos'    => 4,
                  'agent_virt'            => 1,
                  'agent_null_right'      => [ $edit, $edit_global ],
                  'agent_null_right_link' => $edit_global,
-                 'agent_pos'             => 5,
+                 'agent_pos'             => 6,
                  'query'                 => { 'select'    => $select,
                                               'table'     => 'part_pkg',
                                               'hashref'   => \%hash,
@@ -57,7 +57,7 @@ my @where = ();
 
 if ( $cgi->param('recurring') ) {
   $hash{'freq'} = { op=>'!=', value=>'0' };
-  $extra_count = ' freq != 0 ';
+  $extra_count = " freq != '0' ";
 }
 
 my $classnum = '';
@@ -84,11 +84,11 @@ my $extra_sql = scalar(@where)
                   join( 'AND ', @where)
                 : '';
 
-my $agentnums = join(',', $curuser->agentnums);
+my $agentnums_sql = $curuser->agentnums_sql( 'table'=>'cust_main' );
 my $count_cust_pkg = "
   SELECT COUNT(*) FROM cust_pkg LEFT JOIN cust_main USING ( custnum )
     WHERE cust_pkg.pkgpart = part_pkg.pkgpart
-      AND cust_main.agentnum IN ($agentnums)
+      AND $agentnums_sql
 ";
 
 $select = "
@@ -152,14 +152,24 @@ my $html_posttotal =
          ).
   ' )';
 
+my $recur_toggle = $cgi->param('recurring') ? 'show' : 'hide';
+$cgi->param('recurring', $cgi->param('recurring') ^ 1 );
+
+$html_posttotal .=
+  '( <A HREF="'. $cgi->self_url.'">'. "$recur_toggle one-time charges</A> )";
+
+$cgi->param('recurring', $cgi->param('recurring') ^ 1 ); #put it back
+
 # ------
 
 my $link = [ $p.'edit/part_pkg.cgi?', 'pkgpart' ];
 
-my @header = ( '#', 'Package', 'Comment' );
-my @fields = ( 'pkgpart', 'pkg', 'comment' );
-my $align = 'rll';
-my @links = ( $link, $link, '' );
+my @header = ( '#', 'Package', 'Comment', 'Custom' );
+my @fields = ( 'pkgpart', 'pkg', 'comment',
+               sub{ '<B><FONT COLOR="#0000CC">'.$_[0]->custom.'</FONT></B>' }
+             );
+my $align = 'rllc';
+my @links = ( $link, $link, '', '' );
 
 unless ( 0 ) { #already showing only one class or something?
   push @header, 'Class';
@@ -167,6 +177,12 @@ unless ( 0 ) { #already showing only one class or something?
   $align .= 'l';
 }
 
+if ( $conf->exists('pkg-addon_classnum') ) {
+  push @header, "Add'l order class";
+  push @fields, sub { shift->addon_classname || '(none)'; };
+  $align .= 'l';
+}
+
 tie my %plans, 'Tie::IxHash', %{ FS::part_pkg::plan_info() };
 
 tie my %plan_labels, 'Tie::IxHash',
@@ -179,6 +195,9 @@ push @fields, sub {
   my $part_pkg = shift;
   (my $plan = $plan_labels{$part_pkg->plan} ) =~ s/ /&nbsp;/g;
   my $is_recur = ( $part_pkg->freq ne '0' );
+  my @discounts = sort { $a->months <=> $b->months }
+                  map { $_->discount  }
+                  $part_pkg->part_pkg_discount;
 
   [
     [
@@ -222,6 +241,28 @@ push @fields, sub {
           }
       $part_pkg->bill_part_pkg_link
     ),
+    ( scalar(@discounts)
+        ?  [ 
+              { data => '<b>Discounts</b>',
+                align=>'center', #?
+                colspan=>2,
+              }
+            ]
+        : ()  
+    ),
+    ( scalar(@discounts)
+        ? map { 
+            [ 
+              { data  => $_->months. ':',
+                align => 'right',
+              },
+              { data => $_->amount ? '$'. $_->amount : $_->percent. '%'
+              }
+            ]
+          }
+          @discounts
+        : ()
+    ),
   ];
 
 #  $plan_labels{$part_pkg->plan}.'<BR>'.