add plan & pricing to package browse...
[freeside.git] / httemplate / browse / part_pkg.cgi
index 0b83fc0..77f6261 100755 (executable)
@@ -1,14 +1,16 @@
 <% include( 'elements/browse.html',
                  'title'              => 'Package Definitions',
-                 'menubar'            => [ 'Main Menu' => $p ],
                  'html_init'          => $html_init,
                  'name'               => 'package definitions',
                  'disableable'        => 1,
                  'disabled_statuspos' => 3,
-                 'query'              => { 'select'    => $select,
-                                           'table'     => 'part_pkg',
-                                           'hashref'   => {},
-                                           'extra_sql' => "ORDER BY $orderby",
+                 'agent_virt'         => 1,
+                 'agent_null_right'   => 'Edit global package definitions',
+                 'agent_pos'          => 5,
+                 'query'              => { 'select'   => $select,
+                                           'table'    => 'part_pkg',
+                                           'hashref'  => {},
+                                           'order_by' => "ORDER BY $orderby",
                                          },
                  'count_query'        => $count_query,
                  'header'             => \@header,
@@ -20,7 +22,8 @@
 <%init>
 
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+  unless $FS::CurrentUser::CurrentUser->access_right('Edit package definitions')
+      || $FS::CurrentUser::CurrentUser->access_right('Edit global package definitions');
 
 my $select = '*';
 my $orderby = 'pkgpart';
@@ -52,6 +55,7 @@ if ( $cgi->param('active') ) {
 
 my $conf = new FS::Conf;
 my $taxclasses = $conf->exists('enable_taxclasses');
+my $money_char = $conf->config('money_char') || '$';
 
 my $html_init;
 #unless ( $cgi->param('active') ) {
@@ -79,6 +83,49 @@ unless ( 0 ) { #already showing only one class or something?
   $align .= 'l';
 }
 
+tie my %plans, 'Tie::IxHash', %{ FS::part_pkg::plan_info() };
+
+tie my %plan_labels, 'Tie::IxHash',
+  map {  $_ => ( $plans{$_}->{'shortname'} || $plans{$_}->{'name'} ) }
+      keys %plans;
+
+push @header, 'Pricing';
+$align .= 'r'; #?
+push @fields, sub {
+  my $part_pkg = shift;
+
+  [
+    [
+      { data=>$plan_labels{$part_pkg->plan},
+        align=>'center'
+      },
+    ],
+    [
+      { data=>$money_char.
+              sprintf('%.2f setup', $part_pkg->option('setup_fee') ),
+        align=>'right'
+      },
+    ],
+    [
+      { data=>( $part_pkg->freq ne '0'
+                  ? $money_char.sprintf('%.2f ', $part_pkg->option('recur_fee') )
+                  : ''
+              ).
+              $part_pkg->freq_pretty,
+        align=>'right'
+      },
+    ],
+  ];
+
+#  $plan_labels{$part_pkg->plan}.'<BR>'.
+#    $money_char.sprintf('%.2f setup<BR>', $part_pkg->option('setup_fee') ).
+#    ( $part_pkg->freq ne '0'
+#      ? $money_char.sprintf('%.2f ', $part_pkg->option('recur_fee') )
+#      : ''
+#    ).
+#    $part_pkg->freq_pretty; #.'<BR>'
+};
+
 #if ( $cgi->param('active') ) {
   push @header, 'Customer<BR>packages';
   my %col = (
@@ -128,23 +175,17 @@ unless ( 0 ) { #already showing only one class or something?
   $align .= 'r';
 #}
 
-push @header, 'Frequency';
-push @fields, sub { shift->freq_pretty; };
-$align .= 'l';
-
 if ( $taxclasses ) {
   push @header, 'Taxclass';
   push @fields, sub { shift->taxclass() || '&nbsp;'; };
   $align .= 'l';
 }
 
-push @header, 'Plan',
-              'Data',
+push @header, 'Plan options',
               'Services';
               #'Service', 'Quan', 'Primary';
 
-push @fields, sub { shift->plan || '(legacy)' }, 
-
+push @fields, 
               sub {
                     my $part_pkg = shift;
                     if ( $part_pkg->plan ) {
@@ -220,6 +261,9 @@ $align .= 'lrl'; #rr';
 
 # --------
 
-my $count_query = 'SELECT COUNT(*) FROM part_pkg';
+my $count_query = 'SELECT COUNT(*) FROM part_pkg WHERE '.
+                    $FS::CurrentUser::CurrentUser->agentnums_sql(
+                      'null_right' => 'Edit global package definitions',
+                    );
 
 </%init>