%
%
%#false laziness w/access_user.html
%my %search = ();
%my $search = '';
%unless ( $cgi->param('showdisabled') ) {
%  %search = ( 'disabled' => '' );
%  $search = "( disabled = '' OR disabled IS NULL )";
%}
%
%my $select = '*';
%my $orderby = 'pkgpart';
%if ( $cgi->param('active') ) {
%
%  $orderby = 'num_active DESC';
%}
%  $select = "
%
%    *,
%
%    ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
%       AND ( cancel IS NULL OR cancel = 0 )
%       AND ( susp IS NULL OR susp = 0 )
%    ) AS num_active,
%
%    ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
%        AND ( cancel IS NULL OR cancel = 0 )
%        AND susp IS NOT NULL AND susp != 0
%    ) AS num_suspended,
%
%    ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
%        AND cancel IS NOT NULL AND cancel != 0
%    ) AS num_cancelled
%
%  ";
%
%#}
%
%my $conf = new FS::Conf;
%my $taxclasses = $conf->exists('enable_taxclasses');
%
%my $html_init;
%#unless ( $cgi->param('active') ) {
%  $html_init = qq!
%    One or more service definitions are grouped together into a package 
%    definition and given pricing information.  Customers purchase packages
%    rather than purchase services directly.
%    Add a new package definition
%    
%  !;
%#}
%
%my $posttotal;
%if ( $cgi->param('showdisabled') ) {
%  $cgi->param('showdisabled', 0);
%  $posttotal = '( hide disabled packages )';
%  $cgi->param('showdisabled', 1);
%} else {
%  $cgi->param('showdisabled', 1);
%  $posttotal = '( show disabled packages )';
%  $cgi->param('showdisabled', 0);
%}
%
%
%# ------
%
%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 @style = ( '', '', '' );
%
%#false laziness w/access_user.html
%#unless ( $cgi->param('showdisabled') ) { #its been reversed already
%if ( $cgi->param('showdisabled') ) { #its been reversed already
%  push @header, 'Status';
%  push @fields, sub { shift->disabled
%                        ? 'DISABLED'
%                        : 'Active'
%                    };
%  push @links, '';
%  $align .= 'c';
%  push @style, 'b';
%}
%
%unless ( 0 ) { #already showing only one class or something?
%  push @header, 'Class';
%  push @fields, sub { shift->classname || '(none)'; };
%  $align .= 'l';
%}
%
%#if ( $cgi->param('active') ) {
%  push @header, 'Customer
packages';
%  my %col = (
%    'active'      => '00CC00',
%    'suspended'   => 'FF9900',
%    'cancelled'   => 'FF0000',
%  );
%  my $cust_pkg_link = $p. 'search/cust_pkg.cgi?pkgpart=';
%  push @fields, sub { my $part_pkg = shift;
%                      [
%                        map {
%                              [
%                                {
%                                 'data'  => ''.
%                                            $part_pkg->get("num_$_").
%                                            '',
%                                 'align' => 'right',
%                                },
%                                {
%                                 'data'  => $_,
%                                 'align' => 'left',
%                                 'link'  => ( $part_pkg->get("num_$_")
%                                                ? $cust_pkg_link.
%                                                  $part_pkg->pkgpart.
%                                                  ";magic=$_"
%                                                : ''
%                                            ),
%                                },
%                              ],
%                            } (qw( active suspended cancelled ))
%                      ]; };
%  $align .= 'r';
%#}
%
%push @header, 'Frequency';
%push @fields, sub { shift->freq_pretty; };
%$align .= 'l';
%
%if ( $taxclasses ) {
%  push @header, 'Taxclass';
%  push @fields, sub { shift->taxclass() || ' '; };
%  $align .= 'l';
%}
%
%push @header, 'Plan',
%              'Data',
%              'Services';
%              #'Service', 'Quan', 'Primary';
%
%push @fields, sub { shift->plan || '(legacy)' }, 
%
%              sub {
%                    my $part_pkg = shift;
%                    if ( $part_pkg->plan ) {
%
%                      [ map { 
%                              /^(\w+)=(.*)$/; #or something;
%                              [
%                                { 'data'  => $1,
%                                  'align' => 'right',
%                                },
%                                { 'data'  => $2,
%                                  'align' => 'left',
%                                },
%                              ];
%                            }
%                        split(/\n/, $part_pkg->plandata)
%                      ];
%
%                    } else {
%
%                      [ map { [
%                                { 'data'  => uc($_),
%                                  'align' => 'right',
%                                },
%                                {
%                                  'data'  => $part_pkg->$_(),
%                                  'align' => 'left',
%                                },
%                              ];
%                            }
%                        (qw(setup recur))
%                      ];
%
%                    }
%
%                  },
%
%              sub {
%                    my $part_pkg = shift;
%
%                    [ map  {
%                             my $pkg_svc = $_;
%                             my $part_svc = $pkg_svc->part_svc;
%                             my $svc = $part_svc->svc;
%                             if ( $pkg_svc->primary_svc =~ /^Y/i ) {
%                               $svc = "$svc (PRIMARY)";
%                             }
%                             $svc =~ s/ +/ /g;
%
%                             [
%                               {
%                                 'data'  => ''. $pkg_svc->quantity. '',
%                                 'align' => 'right'
%                               },
%                               {
%                                 'data'  => $svc,
%                                 'align' => 'left',
%                                 'link'  => $p. 'edit/part_svc.cgi?'.
%                                            $part_svc->svcpart,
%                               },
%                             ];
%                           }
%                      sort {     $b->primary_svc =~ /^Y/i
%                             <=> $a->primary_svc =~ /^Y/i
%                           }
%                           $part_pkg->pkg_svc
%
%                    ];
%
%                  };
%
%$align .= 'lrl'; #rr';
%
%# --------
%
%my $count_query = 'SELECT COUNT(*) FROM part_pkg';
%$count_query .= " WHERE $search"
%  if $search;
%
%
<% include( 'elements/browse.html',
                 'title'          => 'Package Definitions',
                 'menubar'        => [ 'Main Menu' => $p ],
                 'html_init'      => $html_init,
                 'html_posttotal' => $posttotal,
                 'name'           => 'package definitions',
                 'query'          => { 'select'    => $select,
                                       'table'     => 'part_pkg',
                                       'hashref'   => \%search,
                                       'extra_sql' => "ORDER BY $orderby",
                                     },
                 'count_query'    => $count_query,
                 'header'         => \@header,
                 'fields'         => \@fields,
                 'links'          => \@links,
                 'align'          => $align,
                 'style'          => \@style,
             )
%>