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',
100 % #'one-time charge' => '000000',
101 % 'charge' => '000000',
103 % my $cust_pkg_link = $p. 'search/cust_pkg.cgi?pkgpart=';
104 % push @fields, sub { my $part_pkg = shift;
109 % if ( $magic eq 'active' && $part_pkg->freq == 0 ) {
110 % $magic = 'inactive';
111 % #$label = 'one-time charge',
117 % 'data' => '<B><FONT COLOR="#'. $col{$label}. '">'.
118 % $part_pkg->get("num_$_").
120 % 'align' => 'right',
124 % ( $part_pkg->get("num_$_") != 1
125 % && $label =~ /charge$/
130 % 'link' => ( $part_pkg->get("num_$_")
132 % $part_pkg->pkgpart.
138 % } (qw( active suspended cancelled ))
143 %push @header, 'Frequency';
144 %push @fields, sub { shift->freq_pretty; };
147 %if ( $taxclasses ) {
148 % push @header, 'Taxclass';
149 % push @fields, sub { shift->taxclass() || ' '; };
153 %push @header, 'Plan',
156 % #'Service', 'Quan', 'Primary';
158 %push @fields, sub { shift->plan || '(legacy)' },
161 % my $part_pkg = shift;
162 % if ( $part_pkg->plan ) {
165 % /^(\w+)=(.*)$/; #or something;
168 % 'align' => 'right',
175 % split(/\n/, $part_pkg->plandata)
181 % { 'data' => uc($_),
182 % 'align' => 'right',
185 % 'data' => $part_pkg->$_(),
198 % my $part_pkg = shift;
202 % my $part_svc = $pkg_svc->part_svc;
203 % my $svc = $part_svc->svc;
204 % if ( $pkg_svc->primary_svc =~ /^Y/i ) {
205 % $svc = "<B>$svc (PRIMARY)</B>";
207 % $svc =~ s/ +/ /g;
211 % 'data' => '<B>'. $pkg_svc->quantity. '</B>',
217 % 'link' => $p. 'edit/part_svc.cgi?'.
218 % $part_svc->svcpart,
222 % sort { $b->primary_svc =~ /^Y/i
223 % <=> $a->primary_svc =~ /^Y/i
231 %$align .= 'lrl'; #rr';
235 %my $count_query = 'SELECT COUNT(*) FROM part_pkg';
236 %$count_query .= " WHERE $search"
240 <% include( 'elements/browse.html',
241 'title' => 'Package Definitions',
242 'menubar' => [ 'Main Menu' => $p ],
243 'html_init' => $html_init,
244 'html_posttotal' => $posttotal,
245 'name' => 'package definitions',
246 'query' => { 'select' => $select,
247 'table' => 'part_pkg',
248 'hashref' => \%search,
249 'extra_sql' => "ORDER BY $orderby",
251 'count_query' => $count_query,
252 'header' => \@header,
253 'fields' => \@fields,