X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FPart.pm;h=38b3b55027507ea7795f2b70a011960b86ee08a2;hb=b623ece7b8ba928117bc2280d64d3ef8cbed2e48;hp=4d8da25f854a57e0b2e675f622d24497d20e3bd2;hpb=7a6466811399cba50ab3a55f18665b5663f6d3a5;p=kivitendo-erp.git diff --git a/SL/Controller/Part.pm b/SL/Controller/Part.pm index 4d8da25f8..38b3b5502 100644 --- a/SL/Controller/Part.pm +++ b/SL/Controller/Part.pm @@ -21,20 +21,20 @@ use Rose::Object::MakeMethods::Generic ( __PACKAGE__->run_before(sub { $::auth->assert('part_service_assembly_edit') }); __PACKAGE__->make_filtered( - ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], - LAUNDER_TO => 'filter', + ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], + LAUNDER_TO => 'filter', ); __PACKAGE__->make_paginated( - ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], + ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], ); __PACKAGE__->make_sorted( - ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], + ONLY => [ qw(part_picker_search part_picker_result ajax_autocomplete) ], - DEFAULT_BY => 'partnumber', - DEFAULT_DIR => 1, + DEFAULT_BY => 'partnumber', + DEFAULT_DIR => 1, - partnumber => t8('Partnumber'), + partnumber => t8('Partnumber'), ); sub action_ajax_autocomplete { @@ -44,8 +44,23 @@ sub action_ajax_autocomplete { # if someone types something, and hits enter, assume he entered the full name. # if something matches, treat that as sole match + # unfortunately get_models can't do more than one per package atm, so we d it + # the oldfashioned way. if ($::form->{prefer_exact}) { - # TODO! + my $exact_matches; + if (1 == scalar @{ $exact_matches = SL::DB::Manager::Part->get_all( + query => [ + obsolete => 0, + SL::DB::Manager::Part->type_filter($::form->{filter}{type}), + or => [ + description => { ilike => $::form->{filter}{'all:substr::ilike'} }, + partnumber => { ilike => $::form->{filter}{'all:substr::ilike'} }, + ] + ], + limit => 2, + ) }) { + $self->parts($exact_matches); + } } my @hashes = map { @@ -57,7 +72,7 @@ sub action_ajax_autocomplete { description => $_->description, type => $_->type, } - } @{ $self->parts }; + } @{ $self->parts }; # neato: if exact match triggers we don't even need the init_parts $self->render(\ SL::JSON::to_json(\@hashes), { layout => 0, type => 'json', process => 0 }); } @@ -77,7 +92,7 @@ sub action_part_picker_result { } sub init_parts { - $_[0]->get_models; + $_[0]->get_models(with_objects => [ qw(unit_obj) ]); } 1;