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::DBUtils qw(like);
11 use SL::Locale::String qw(t8);
12 use SL::Util qw(trim);
16 sub name { 'phone_number' }
18 sub description_config { t8('All phone numbers') }
20 sub description_field { t8('All phone numbers') }
22 sub query_autocomplete {
26 my $like_search_term = like(trim($::form->{term}));
28 foreach my $model (qw(Customer Vendor)) {
29 my $manager = 'SL::DB::Manager::' . $model;
30 my $result = $manager->get_all(
31 query => [ or => [ 'obsolete' => 0, 'obsolete' => undef ],
32 or => [ phone => { ilike => $like_search_term },
33 fax => { ilike => $like_search_term },
34 'contacts.cp_phone1' => { ilike => $like_search_term },
35 'contacts.cp_phone2' => { ilike => $like_search_term },
36 'contacts.cp_fax' => { ilike => $like_search_term },
37 'contacts.cp_mobile1' => { ilike => $like_search_term },
38 'contacts.cp_mobile2' => { ilike => $like_search_term },
39 'contacts.cp_satphone' => { ilike => $like_search_term },
40 'contacts.cp_satfax' => { ilike => $like_search_term },
41 'contacts.cp_privatphone' => { ilike => $like_search_term },
43 with_objects => ['contacts']);
46 value => $_->displayable_name,
47 label => $_->displayable_name,
48 id => lc($model) . '_' . $_->id,
55 sub select_autocomplete {
58 if ($::form->{id} =~ m{^(customer|vendor)_(\d+)$}) {
63 if ($type eq 'customer') {
64 SL::Controller::TopQuickSearch::Customer->new->select_autocomplete;
65 } elsif ($type eq 'vendor') {
66 SL::Controller::TopQuickSearch::Vendor->new->select_autocomplete;
74 my $results = $self->query_autocomplete;
77 $::form->{id} = $results->[0]{id};
78 return $self->select_autocomplete;
82 # TODO: result overview page