Projekt

Allgemein

Profil

Herunterladen (2,48 KB) Statistiken
| Zweig: | Markierung: | Revision:
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;
my $search_term = trim($::form->{term});
$search_term =~ s{\p{WSpace}+}{}g;
$search_term = join ' *', split(//, $search_term);

foreach my $model (qw(Customer Vendor)) {
my $manager = 'SL::DB::Manager::' . $model;
my $result = $manager->get_all(
query => [ or => [ 'obsolete' => 0, 'obsolete' => undef ],
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 },
] ],
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;
(12-12/20)