+my $money_char = FS::Conf->new->config('money_char') || '$';
+
+my $title = emt('Credit Search Results');
+
+my $unapplied = $cgi->param('unapplied');
+$title = emt("Unapplied $title") if $unapplied;
+my $clink = sub {
+ my $cust_bill = shift;
+ $cust_bill->cust_main_custnum
+ ? [ "${p}view/cust_main.cgi?", 'custnum' ]
+ : '';
+};
+
+my (@header, @fields, @sort_fields, $align, @links, @color, @style);
+$align = '';
+
+#amount
+push @header, emt('Amount');
+push @fields, sub { $money_char .sprintf('%.2f', shift->amount) };
+push @sort_fields, 'amount';
+$align .= 'r';
+push @links, '';
+push @color, '';
+push @style, '';
+
+# unapplied amount
+if ($unapplied) {
+ push @header, emt('Unapplied');
+ push @fields, sub { $money_char .sprintf('%.2f', shift->unapplied_amount) };
+ push @sort_fields, '';
+ $align .= 'r';
+ push @links, '';
+ push @color, '';
+ push @style, '';
+}
+
+push @header, emt('Date'),
+ emt('By'),
+ emt('Reason'),
+ emt('Info'),
+ ;
+push @fields, sub { time2str('%b %d %Y', shift->_date ) },
+ 'otaker',
+ 'reason_only',
+ 'addlinfo',
+ ;
+push @sort_fields, '_date', 'otaker', 'reasonnum', 'addlinfo';
+$align .= 'rlll';
+push @links, '',
+ '',
+ '',
+ '',
+ ;
+push @color, '',
+ '',
+ '',
+ '',
+ ;
+push @style, '',
+ '',
+ '',
+ '',
+ ;
+
+# insert customer email after 'Reason' if this is a commission report
+if ( $cgi->param('commission_salesnum') or $cgi->param('commission_agentnum') ) {
+ my $sub_customer_email = sub {
+ my $cust_credit = shift;
+ my $cust_event = $cust_credit->cust_event or return '';
+ my $cust_X = $cust_event->cust_X or return '';
+ my $cust_main = $cust_X->cust_main or return '';
+ my ($email) = $cust_main->invoicing_list_emailonly;
+ return encode_entities("<$email>") if length($email);
+ '';
+ };
+ push @header, '';
+ push @fields, $sub_customer_email;
+ push @sort_fields, '';
+ $align .= 'l';
+ push @links, '';
+ push @color, '';
+ push @style, '';
+}
+
+# cust fields
+push @header, FS::UI::Web::cust_header();
+push @fields, \&FS::UI::Web::cust_fields;
+push @sort_fields, FS::UI::Web::cust_sort_fields;
+$align .= FS::UI::Web::cust_aligns();
+push @links, map { $_ ne 'Cust. Status' ? $clink : '' }
+ FS::UI::Web::cust_header();
+push @color, FS::UI::Web::cust_colors();
+push @style, FS::UI::Web::cust_styles();
+