+<& elements/search.html,
+ 'html_init' => $html_init,
+ 'title' => emt('Package Search Results'),
+ 'name' => 'packages',
+ 'query' => $sql_query,
+ 'count_query' => $count_query,
+ 'header' => [ emt('#'),
+ emt('Quan.'),
+ emt('Package'),
+ emt('Class'),
+ emt('Status'),
+ emt('Sales Person'),
+ emt('Ordered by'),
+ emt('Setup'),
+ emt('Base Recur'),
+ emt('Freq.'),
+ emt('Setup'),
+ emt('Last bill'),
+ emt('Next bill'),
+ emt('Adjourn'),
+ emt('Susp.'),
+ emt('Susp. delay'),
+ emt('Expire'),
+ emt('Contract end'),
+ emt('Changed'),
+ emt('Cancel'),
+ emt('Reason'),
+ FS::UI::Web::cust_header(
+ $cgi->param('cust_fields')
+ ),
+ emt('Services'),
+ ],
+ 'fields' => [
+ 'pkgnum',
+ 'quantity',
+ sub { $_[0]->pkg; },
+ 'classname',
+ sub { ucfirst(shift->status); },
+ 'salesperson',
+ 'otaker',
+ sub { sprintf( $money_char.'%.2f',
+ shift->part_pkg->option('setup_fee'),
+ );
+ },
+ sub { my $c = shift;
+ sprintf( $money_char.'%.2f',
+ $c->base_recur
+ );
+ },
+ sub { FS::part_pkg::freq_pretty(shift); },
+
+ ( map { time_or_blank($_) }
+ qw( setup last_bill bill adjourn susp dundate expire contract_end change_date cancel ) ),
+
+ sub { my $self = shift;
+ my $return = '';
+ foreach my $action ( qw ( cancel susp ) ) {
+ my $reason = $self->last_reason($action);
+ $return = $reason->reason if $reason;
+ last if $return;
+ }
+ $return;
+ },
+
+ \&FS::UI::Web::cust_fields,
+ sub {
+ my $cust_pkg = shift;
+ my $type = $cgi->param('_type') || '';
+ if ($type =~ /xls|csv/) {
+ my $cust_svc = $cust_pkg->primary_cust_svc;
+ if($cust_svc) {
+ return join ": ",($cust_svc->label)[0,1];
+ }
+ else {
+ return '';
+ }
+ }
+ else {
+ [ $process_svc_labels->( $cust_pkg ) ]
+ }
+ }
+ ],
+ 'color' => [
+ '',
+ '',
+ '',
+ '',
+ sub { shift->statuscolor; },
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ FS::UI::Web::cust_colors(),
+ '',
+ ],
+ 'style' => [ '', '', '', '', 'b', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+ FS::UI::Web::cust_styles() ],
+ 'size' => [ '', '', '', '', '-1' ],
+ 'align' => 'rrlccccrrlrrrrrrrrrrl'. FS::UI::Web::cust_aligns(). 'r',
+ 'links' => [
+ $link,
+ $link,
+ $link,
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '', # link to changed-from package?
+ '',
+ '',
+ '',
+ ( map { $_ ne 'Cust. Status' ? $clink : '' }
+ FS::UI::Web::cust_header(
+ $cgi->param('cust_fields')
+ )
+ ),
+ '',
+ ],
+&>
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied"
+ unless $curuser->access_right('List packages');