Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / misc / xmlhttp-cust_main-search.cgi
index 8dbd5a4..86983e4 100644 (file)
@@ -1,21 +1,64 @@
-<%
-   my $sub = $cgi->param('sub');
-   if ( $sub eq 'custnum_search' ) {
-     my $custnum = $cgi->param('arg');
-     my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
+% if ( $sub eq 'custnum_search' ) { 
+%   my $custnum = $cgi->param('arg');
+%   my $return = [];
+%   if ( $custnum =~ /^(\d+)$/ ) {
+%      $return = findbycustnum($1,0);
+%      $return = findbycustnum($1,1) if(!scalar(@$return));
+%   }
+<% objToJson($return) %>
+% } elsif ( $sub eq 'smart_search' ) {
+%
+%   my $string = $cgi->param('arg');
+%   my @cust_main = smart_search( 'search' => $string,
+%                                 'no_fuzzy_on_exact' => 1, #pref?
+%                               );
+%   my $return = [ map [ $_->custnum, $_->name, $_->balance, $_->ucfirst_status, $_->statuscolor, scalar($_->open_cust_bill) ], @cust_main ];
+%     
+<% objToJson($return) %>
+% } elsif ( $sub eq 'invnum_search' ) {
+%
+%   my $string = $cgi->param('arg');
+%   if ( $string =~ /^(\d+)$/ ) {
+%     my $inv = qsearchs('cust_bill', { 'invnum' => $1 });
+%     my $return = $inv ? findbycustnum($inv->custnum,0) : [];
+<% objToJson($return) %>
+%   } else { #return nothing
+[]
+%   }
+% } 
+% elsif ( $sub eq 'exact_search' ) {
+%   # XXX possibly should query each element separately
+%   my $hashref = decode_json($cgi->param('arg'));
+%   my @cust_main = qsearch('cust_main', $hashref);
+%   my $return = [];
+%   foreach (@cust_main) {
+%     push @$return, {
+%       custnum => $_->custnum,
+%       name => $_->name_short,
+%       address1 => $_->address1,
+%       city => $_->city,
+%     };
+%   }
+<% objToJson($return) %>
+% }
+<%init>
 
-     %>"<%= $cust_main ? $cust_main->name : '' %>"
-
-<% } elsif ( $sub eq 'smart_search' ) {
-
-     my $string = $cgi->param('arg');
-     my @cust_main = smart_search( 'search' => $string );
-     my $return = [ map [ $_->custnum, $_->name ], @cust_main ];
-
-     %><%= objToJson($return) %>
-
-<% } %>
+my $conf = new FS::Conf;
 
+my $sub = $cgi->param('sub');
 
+sub findbycustnum{
+    my $custnum = shift;
+    my $agent = shift;
+    my $hashref = { 'custnum' => $custnum };
+    $hashref = { 'agent_custid' => $custnum } if $agent;
+    my $c = qsearchs({
+               'table'   => 'cust_main',
+               'hashref' => $hashref,
+               'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
+               });
+   return [ $c->custnum, $c->name, $c->balance, $c->ucfirst_status, $c->statuscolor, scalar($c->open_cust_bill) ] 
+       if $c;
+   [];
+}
+</%init>