)
</%doc>
-<% include( 'search.html',
- 'title' => $title,
+<& search.html,
+ 'title' => $title, # XXX: translate
'name_singular' => $name_singular,
'query' => $sql_query,
'count_query' => $count_query,
'links' => \@links,
'color' => \@color,
'style' => \@style,
- )
-%>
+&>
<%init>
my %opt = @_;
$title .= "\u$name_singular Search Results";
my $link = '';
-if ( ( $curuser->access_right('View invoices') #XXX for now
- || $curuser->access_right('View customer payments')
+if ( ( $curuser->access_right('View invoices') #remove in 2.5 (2.7?)
+ || ($curuser->access_right('View payments') && $table =~ /^cust_pay/)
+ || ($curuser->access_right('View refunds') && $table eq 'cust_refund')
)
&& ! $opt{'disable_link'}
)
push @sort_fields, '', $amount_field;
if ( $unapplied ) {
- push @header, 'Unapplied';
+ push @header, emt('Unapplied');
$align .= 'r';
push @links, '';
push @fields, sub { sprintf('$%.2f', shift->unapplied_amount) };
push @sort_fields, '';
}
-push @header, 'Date';
+push @header, emt('Date');
$align .= 'r';
push @links, '';
push @fields, sub { time2str('%b %d %Y', shift->_date ) };
push @sort_fields, '_date';
unless ( $opt{'disable_by'} ) {
- push @header, 'By';
+ push @header, emt('By');
$align .= 'c';
push @links, '';
push @fields, sub { my $o = shift->otaker;
}
if ( $tax_names ) {
- push @header, ('Tax names', 'Tax province');
+ push @header, (emt('Tax names'), emt('Tax province'));
$align .= 'cc';
push @links, ('','');
push @fields, sub { join (' + ', map { /^(.*?)(, \w\w)?$/; $1 }
$title = $agent->agent. " $title";
}
+ if ( $cgi->param('refnum') && $cgi->param('refnum') =~ /^(\d+)$/ ) {
+ push @search, "refnum = $1";
+ my $part_referral = qsearchs('part_referral', { 'refnum' => $1 } );
+ die "unknown refnum $1" unless $part_referral;
+ $title = $part_referral->referral. " $title";
+ }
+
+ if ( $cgi->param('cust_classnum') ) {
+ my @classnums = grep /^\d+$/, $cgi->param('cust_classnum');
+ push @search, 'cust_main.classnum IN('.join(',',@classnums).')'
+ if @classnums;
+ }
+
if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
push @search, "custnum = $1";
}
push @search, "$table.payinfo = '$1'";
}
+ if ( $cgi->param('ccpay') =~ /^([\w-:]+)$/ ) {
+ # I think that's all the characters we need to allow.
+ # To avoid confusion, this parameter searches both auth and order_number.
+ push @search, "($table.auth LIKE '$1%') OR ($table.order_number LIKE '$1%')";
+ push @fields, 'auth', 'order_number';
+ push @header, 'Auth #', 'Transaction #';
+ $align .= 'rr';
+
+ }
+
if ( $cgi->param('usernum') =~ /^(\d+)$/ ) {
push @search, "$table.usernum = $1";
}
$orderby = "LOWER(company || ' ' || last || ' ' || first )";
+ } elsif ( $cgi->param('magic') eq 'batchnum' ) {
+
+ $cgi->param('batchnum') =~ /^(\d+)$/
+ or die "illegal batchnum: ".$cgi->param('batchnum');
+
+ push @search, "batchnum = $1";
+
+ $orderby = "LOWER(company || ' ' || last || ' ' || first )";
+
} else {
die "unknown search magic: ". $cgi->param('magic');
}