% % %#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, ) %>