fd2694cd1a67a8c555f965c49db90cf2779fca55
[kivitendo-erp.git] / SL / Controller / TopQuickSearch / DeliveryOrder.pm
1 package SL::Controller::TopQuickSearch::DeliveryOrder;
2
3 use strict;
4 use parent qw(Rose::Object);
5
6 use SL::Locale::String qw(t8);
7 use SL::DB::DeliveryOrder;
8 use SL::Controller::Helper::GetModels;
9 use SL::Controller::Base;
10
11 use Rose::Object::MakeMethods::Generic (
12   'scalar --get_set_init' => [ qw(models) ],
13 );
14
15 # nope. this is only for subclassing
16 sub auth { 'NOT ALLOWED' }
17
18 sub name { die 'must be overwritten' }
19
20 sub description_config { die 'must be overwritten' }
21
22 sub description_field { die 'must be overwritten' }
23
24 sub type { die 'must be overwritten' }
25
26 sub cv { die 'must be overwritten' }
27
28 sub query_autocomplete {
29   my ($self) = @_;
30
31   my $objects = $self->models->get;
32
33   [
34     map {
35      value       => $_->digest,
36      label       => $_->digest,
37      id          => $_->id,
38     }, @$objects
39   ];
40 }
41
42 sub select_autocomplete {
43   $_[0]->redirect_to_object($::form->{id});
44 }
45
46 sub do_search {
47   my ($self) = @_;
48
49   my $objects = $self->models->get;
50
51   return !@$objects     ? ()
52        : @$objects == 1 ? $self->redirect_to_object($objects->[0]->id)
53        :                  $self->redirect_to_search($::form->{term});
54 }
55
56 sub redirect_to_search {
57   SL::Controller::Base->new->url_for(
58     controller   => 'do.pl',
59     action       => 'orders',
60     type         => $_[0]->type,
61     vc           => $_[0]->vc,
62     all          => $_[1],
63     open         => 1,
64     closed       => 1,
65     delivered    => 1,
66     notdelivered => 1,
67     sortdir      => 0,
68     (map {; "l_$_" => 'Y' } qw(donumber transdate cusordnumber reqdate name employee transaction_description)),
69   );
70 }
71
72 sub redirect_to_object {
73   SL::Controller::Base->new->url_for(
74     controller => 'do.pl',
75     action     => 'edit',
76     type       => $_[0]->type,
77     vc         => $_[0]->vc,
78     id         => $_[1],
79   );
80 }
81
82 sub init_models {
83   my ($self) = @_;
84
85   SL::Controller::Helper::GetModels->new(
86     controller => $self,
87     model      => 'DeliveryOrder',
88     source     => {
89       filter => {
90         type => $self->type,
91         'all:substr:multi::ilike' => $::form->{term},
92       },
93     },
94     sorted     => {
95       _default   => {
96         by  => 'transdate',
97         dir => 0,
98       },
99       transdate => t8('Date'),
100     },
101     paginated  => {
102       per_page => 10,
103     },
104     with_objects => [ qw(customer vendor orderitems) ]
105   )
106 }
107
108 1;