kivitendo/SL/Controller/TopQuickSearch/PhoneNumber.pm @ 5cada5ab
d1f58302 | Bernd Bleßmann | package SL::Controller::TopQuickSearch::PhoneNumber;
|
||
use strict;
|
||||
use parent qw(SL::Controller::TopQuickSearch::Base);
|
||||
use SL::Controller::TopQuickSearch::Customer;
|
||||
use SL::Controller::TopQuickSearch::Vendor;
|
||||
use SL::DB::Customer;
|
||||
use SL::DB::Vendor;
|
||||
use SL::Locale::String qw(t8);
|
||||
use SL::Util qw(trim);
|
||||
sub auth { undef }
|
||||
sub name { 'phone_number' }
|
||||
sub description_config { t8('All phone numbers') }
|
||||
sub description_field { t8('All phone numbers') }
|
||||
sub query_autocomplete {
|
||||
my ($self) = @_;
|
||||
my @results;
|
||||
f4da9593 | Bernd Bleßmann | my $search_term = trim($::form->{term});
|
||
$search_term =~ s{\p{WSpace}+}{}g;
|
||||
$search_term = join ' *', split(//, $search_term);
|
||||
d1f58302 | Bernd Bleßmann | |||
foreach my $model (qw(Customer Vendor)) {
|
||||
my $manager = 'SL::DB::Manager::' . $model;
|
||||
my $result = $manager->get_all(
|
||||
query => [ or => [ 'obsolete' => 0, 'obsolete' => undef ],
|
||||
f4da9593 | Bernd Bleßmann | or => [ phone => { imatch => $search_term },
|
||
fax => { imatch => $search_term },
|
||||
'contacts.cp_phone1' => { imatch => $search_term },
|
||||
'contacts.cp_phone2' => { imatch => $search_term },
|
||||
'contacts.cp_fax' => { imatch => $search_term },
|
||||
'contacts.cp_mobile1' => { imatch => $search_term },
|
||||
'contacts.cp_mobile2' => { imatch => $search_term },
|
||||
'contacts.cp_satphone' => { imatch => $search_term },
|
||||
'contacts.cp_satfax' => { imatch => $search_term },
|
||||
'contacts.cp_privatphone' => { imatch => $search_term },
|
||||
d1f58302 | Bernd Bleßmann | ] ],
|
||
with_objects => ['contacts']);
|
||||
push @results, map {
|
||||
value => $_->displayable_name,
|
||||
label => $_->displayable_name,
|
||||
id => lc($model) . '_' . $_->id,
|
||||
}, @$result;
|
||||
}
|
||||
return \@results;
|
||||
}
|
||||
sub select_autocomplete {
|
||||
my ($self) = @_;
|
||||
if ($::form->{id} =~ m{^(customer|vendor)_(\d+)$}) {
|
||||
my $type = $1;
|
||||
my $id = $2;
|
||||
$::form->{id} = $id;
|
||||
if ($type eq 'customer') {
|
||||
SL::Controller::TopQuickSearch::Customer->new->select_autocomplete;
|
||||
} elsif ($type eq 'vendor') {
|
||||
SL::Controller::TopQuickSearch::Vendor->new->select_autocomplete;
|
||||
}
|
||||
}
|
||||
}
|
||||
sub do_search {
|
||||
my ($self) = @_;
|
||||
my $results = $self->query_autocomplete;
|
||||
if (@$results == 1) {
|
||||
$::form->{id} = $results->[0]{id};
|
||||
return $self->select_autocomplete;
|
||||
}
|
||||
}
|
||||
# TODO: result overview page
|
||||
1;
|