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