summaryrefslogtreecommitdiff
path: root/httemplate/misc/taxproduct.cgi
blob: a397f23643999d36ed593ff1aa27ee5a04b6963b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<% encode_json(\@results) %>\
<%once>
my $conf = FS::Conf->new;
my $vendor = $conf->config('tax_data_vendor');
</%once>
<%init>

my $term = $cgi->param('term');
#warn "taxproduct.cgi?$term"; # XXX debug

my $search = {
  table => 'part_pkg_taxproduct',
  hashref => { 'data_vendor' => $vendor }
};

if ( $term =~ /^[A-Z]?\d+$/ ) {
  $search->{extra_sql} = " AND taxproduct ILIKE '$term%'";
  $search->{order_by} = " ORDER BY taxproduct ASC";
} elsif ( length($term) ) {
  $term = dbh->quote( lc($term) ); # protect against bad strings
  $search->{extra_sql} = " AND POSITION($term IN LOWER(description)) > 0";
  # and sort by how close to the beginning of the string it is
  $search->{order_by} = " ORDER BY POSITION($term IN LOWER(description)) ASC, LOWER(description) ASC, taxproduct ASC";
}

$search->{extra_sql} .= ' AND length(taxproduct) > 4'
  if $vendor eq 'compliance_solutions';

my @taxproducts = qsearch($search);
my @results = map {
  { label => $_->taxproduct . ' ' . $_->description,
    value => $_->taxproductnum } 
} @taxproducts;

</%init>