1 package SL::Controller::TopQuickSearch::PhoneNumber;
 
   4 use parent qw(SL::Controller::TopQuickSearch::Base);
 
   6 use SL::Controller::TopQuickSearch::Customer;
 
   7 use SL::Controller::TopQuickSearch::Vendor;
 
  10 use SL::Locale::String qw(t8);
 
  11 use SL::Util qw(trim);
 
  15 sub name { 'phone_number' }
 
  17 sub description_config { t8('All phone numbers') }
 
  19 sub description_field { t8('All phone numbers') }
 
  21 sub query_autocomplete {
 
  25   my $search_term = trim($::form->{term});
 
  26   $search_term    =~ s{\p{WSpace}+}{}g;
 
  27   $search_term    = join ' *', split(//, $search_term);
 
  29   foreach my $model (qw(Customer Vendor)) {
 
  30     my $manager = 'SL::DB::Manager::' . $model;
 
  31     my $result  = $manager->get_all(
 
  32       query => [ or => [ 'obsolete' => 0, 'obsolete' => undef ],
 
  33                  or => [ phone                     => { imatch => $search_term },
 
  34                          fax                       => { imatch => $search_term },
 
  35                          'contacts.cp_phone1'      => { imatch => $search_term },
 
  36                          'contacts.cp_phone2'      => { imatch => $search_term },
 
  37                          'contacts.cp_fax'         => { imatch => $search_term },
 
  38                          'contacts.cp_mobile1'     => { imatch => $search_term },
 
  39                          'contacts.cp_mobile2'     => { imatch => $search_term },
 
  40                          'contacts.cp_satphone'    => { imatch => $search_term },
 
  41                          'contacts.cp_satfax'      => { imatch => $search_term },
 
  42                          'contacts.cp_privatphone' => { imatch => $search_term },
 
  44       with_objects => ['contacts']);
 
  47       value => $_->displayable_name,
 
  48       label => $_->displayable_name,
 
  49       id    => lc($model) . '_' . $_->id,
 
  56 sub select_autocomplete {
 
  59   if ($::form->{id} =~ m{^(customer|vendor)_(\d+)$}) {
 
  64     if ($type eq 'customer') {
 
  65       SL::Controller::TopQuickSearch::Customer->new->select_autocomplete;
 
  66     } elsif ($type eq 'vendor') {
 
  67       SL::Controller::TopQuickSearch::Vendor->new->select_autocomplete;
 
  75   my $results = $self->query_autocomplete;
 
  78     $::form->{id} = $results->[0]{id};
 
  79     return $self->select_autocomplete;
 
  83 # TODO: result overview page