3 %#false laziness w/access_user.html
6 %unless ( $cgi->param('showdisabled') ) {
7 % %search = ( 'disabled' => '' );
8 % $search = "( disabled = '' OR disabled IS NULL )";
12 %my $orderby = 'pkgpart';
13 %if ( $cgi->param('active') ) {
15 % $orderby = 'num_active DESC';
21 % ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
22 % AND ( cancel IS NULL OR cancel = 0 )
23 % AND ( susp IS NULL OR susp = 0 )
26 % ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
27 % AND ( cancel IS NULL OR cancel = 0 )
28 % AND susp IS NOT NULL AND susp != 0
31 % ( SELECT COUNT(*) FROM cust_pkg WHERE cust_pkg.pkgpart = part_pkg.pkgpart
32 % AND cancel IS NOT NULL AND cancel != 0
39 %my $conf = new FS::Conf;
40 %my $taxclasses = $conf->exists('enable_taxclasses');
43 %#unless ( $cgi->param('active') ) {
45 % One or more service definitions are grouped together into a package
46 % definition and given pricing information. Customers purchase packages
47 % rather than purchase services directly.<BR><BR>
48 % <A HREF="${p}edit/part_pkg.cgi"><I>Add a new package definition</I></A>
54 %if ( $cgi->param('showdisabled') ) {
55 % $cgi->param('showdisabled', 0);
56 % $posttotal = '( <a href="'. $cgi->self_url. '">hide disabled packages</a> )';
57 % $cgi->param('showdisabled', 1);
59 % $cgi->param('showdisabled', 1);
60 % $posttotal = '( <a href="'. $cgi->self_url. '">show disabled packages</a> )';
61 % $cgi->param('showdisabled', 0);
67 %my $link = [ $p.'edit/part_pkg.cgi?', 'pkgpart' ];
69 %my @header = ( '#', 'Package', 'Comment' );
70 %my @fields = ( 'pkgpart', 'pkg', 'comment' );
72 %my @links = ( $link, $link, '' );
73 %my @style = ( '', '', '' );
75 %#false laziness w/access_user.html
76 %#unless ( $cgi->param('showdisabled') ) { #its been reversed already
77 %if ( $cgi->param('showdisabled') ) { #its been reversed already
78 % push @header, 'Status';
79 % push @fields, sub { shift->disabled
80 % ? '<FONT COLOR="#FF0000">DISABLED</FONT>'
81 % : '<FONT COLOR="#00CC00">Active</FONT>'
88 %unless ( 0 ) { #already showing only one class or something?
89 % push @header, 'Class';
90 % push @fields, sub { shift->classname || '(none)'; };
94 %#if ( $cgi->param('active') ) {
95 % push @header, 'Customer<BR>packages';
97 % 'active' => '00CC00',
98 % 'suspended' => 'FF9900',
99 % 'cancelled' => 'FF0000',
101 % my $cust_pkg_link = $p. 'search/cust_pkg.cgi?pkgpart=';
102 % push @fields, sub { my $part_pkg = shift;
107 % 'data' => '<B><FONT COLOR="#'. $col{$_}. '">'.
108 % $part_pkg->get("num_$_").
110 % 'align' => 'right',
115 % 'link' => ( $part_pkg->get("num_$_")
117 % $part_pkg->pkgpart.
123 % } (qw( active suspended cancelled ))
128 %push @header, 'Frequency';
129 %push @fields, sub { shift->freq_pretty; };
132 %if ( $taxclasses ) {
133 % push @header, 'Taxclass';
134 % push @fields, sub { shift->taxclass() || ' '; };
138 %push @header, 'Plan',
141 % #'Service', 'Quan', 'Primary';
143 %push @fields, sub { shift->plan || '(legacy)' },
146 % my $part_pkg = shift;
147 % if ( $part_pkg->plan ) {
150 % /^(\w+)=(.*)$/; #or something;
153 % 'align' => 'right',
160 % split(/\n/, $part_pkg->plandata)
166 % { 'data' => uc($_),
167 % 'align' => 'right',
170 % 'data' => $part_pkg->$_(),
183 % my $part_pkg = shift;
187 % my $part_svc = $pkg_svc->part_svc;
188 % my $svc = $part_svc->svc;
189 % if ( $pkg_svc->primary_svc =~ /^Y/i ) {
190 % $svc = "<B>$svc (PRIMARY)</B>";
192 % $svc =~ s/ +/ /g;
196 % 'data' => '<B>'. $pkg_svc->quantity. '</B>',
202 % 'link' => $p. 'edit/part_svc.cgi?'.
203 % $part_svc->svcpart,
207 % sort { $b->primary_svc =~ /^Y/i
208 % <=> $a->primary_svc =~ /^Y/i
216 %$align .= 'lrl'; #rr';
220 %my $count_query = 'SELECT COUNT(*) FROM part_pkg';
221 %$count_query .= " WHERE $search"
225 <% include( 'elements/browse.html',
226 'title' => 'Package Definitions',
227 'menubar' => [ 'Main Menu' => $p ],
228 'html_init' => $html_init,
229 'html_posttotal' => $posttotal,
230 'name' => 'package definitions',
231 'query' => { 'select' => $select,
232 'table' => 'part_pkg',
233 'hashref' => \%search,
234 'extra_sql' => "ORDER BY $orderby",
236 'count_query' => $count_query,
237 'header' => \@header,
238 'fields' => \@fields,