X-Git-Url: http://wagnertech.de/git?p=kivitendo-erp.git;a=blobdiff_plain;f=SL%2FController%2FTopQuickSearch%2FOERecord.pm;fp=SL%2FController%2FTopQuickSearch%2FOERecord.pm;h=d63dee03cbbd62cd14011ade26be2f5f53a8d623;hp=0000000000000000000000000000000000000000;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44 diff --git a/SL/Controller/TopQuickSearch/OERecord.pm b/SL/Controller/TopQuickSearch/OERecord.pm new file mode 100644 index 000000000..d63dee03c --- /dev/null +++ b/SL/Controller/TopQuickSearch/OERecord.pm @@ -0,0 +1,127 @@ +package SL::Controller::TopQuickSearch::OERecord; + +use strict; +use parent qw(Rose::Object); + +use SL::Locale::String qw(t8); +use SL::DB::Order; +use SL::Controller::Helper::GetModels; +use SL::Controller::Base; + +use Rose::Object::MakeMethods::Generic ( + 'scalar --get_set_init' => [ qw(models) ], +); + +# nope. this is only for subclassing +sub auth { 'NOT ALLOWED' } + +sub name { die 'must be overwritten' } + +sub description_config { die 'must be overwritten' } + +sub description_field { die 'must be overwritten' } + +sub query_autocomplete { + my ($self) = @_; + + my $objects = $self->models->get; + + [ + map { + value => $_->digest, + label => $_->digest, + id => $_->id, + }, @$objects + ]; +} + +sub select_autocomplete { + $_[0]->redirect_to_object($::form->{id}); +} + +sub do_search { + my ($self) = @_; + + my $objects = $self->models->get; + + return !@$objects ? () + : @$objects == 1 ? $self->redirect_to_object($objects->[0]->id) + : $self->redirect_to_search($::form->{term}); +} + +sub redirect_to_search { + SL::Controller::Base->new->url_for( + controller => 'oe.pl', + action => 'orders', + type => $_[0]->type, + vc => $_[0]->vc, + all => $_[1], + open => 1, + closed => 1, + sortdir => 0, + (map {; "l_$_" => 'Y' } $_[0]->number, qw(transdate cusordnumber reqdate name employee netamount)), + ); +} + +sub redirect_to_object { + if ($::instance_conf->get_feature_experimental_order) { + SL::Controller::Base->new->url_for( + controller => 'Order', + action => 'edit', + type => $_[0]->type, + id => $_[1], + ); + } else { + SL::Controller::Base->new->url_for( + controller => 'oe.pl', + action => 'edit', + type => $_[0]->type, + vc => $_[0]->vc, + id => $_[1], + ); + } +} + +sub type { + die 'must be overwritten' +} + +sub cv { + die 'must be overwritten' +} + +sub quotation { + $_[0]->type !~ /order/ +} + +sub number { + $_[0]->quotation ? 'quonumber' : 'ordnumber' +} + +sub init_models { + my ($self) = @_; + + SL::Controller::Helper::GetModels->new( + controller => $self, + model => 'Order', + source => { + filter => { + type => $self->type, + 'all:substr:multi::ilike' => $::form->{term}, + }, + }, + sorted => { + _default => { + by => 'transdate', + dir => 0, + }, + transdate => t8('Date'), + }, + paginated => { + per_page => 10, + }, + with_objects => [ qw(customer vendor) ] + ) +} + +1;