+ my ($model, $manager, $number, $matches);
+
+ # first see if this is customer or vendor picking
+ if ($::form->{type} eq 'customer') {
+ $model = $self->customer_models;
+ $manager = 'SL::DB::Manager::Customer';
+ $number = 'customernumber';
+ } elsif ($::form->{type} eq 'vendor') {
+ $model = $self->vendor_models;
+ $manager = 'SL::DB::Manager::Vendor';
+ $number = 'vendornumber';
+ } else {
+ die "unknown type $::form->{type}";
+ }
+
+ # 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}) {
+ my $exact_matches;
+ if (1 == scalar @{ $exact_matches = $manager->get_all(
+ query => [
+ obsolete => 0,
+ or => [
+ name => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
+ $number => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
+ ]
+ ],
+ limit => 2,
+ ) }) {
+ $matches = $exact_matches;
+ }
+ }