TopQuickSearch: Auftrag, Angebot, Lieferauftrag, Preisanfrage
[kivitendo-erp.git] / SL / Controller / TopQuickSearch / OERecord.pm
1 package SL::Controller::TopQuickSearch::OERecord;
2
3 use strict;
4 use parent qw(Rose::Object);
5
6 use SL::Locale::String qw(t8);
7 use SL::DB::Order;
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 { ... }
19
20 sub description_config { ... }
21
22 sub description_field { ... }
23
24 sub query_autocomplete {
25   my ($self) = @_;
26
27   my $objects = $self->models->get;
28
29   [
30     map {
31      value       => $_->digest,
32      label       => $_->digest,
33      id          => $_->id,
34     }, @$objects
35   ];
36 }
37
38 sub select_autocomplete {
39   $_[0]->redirect_to_object($::form->{id});
40 }
41
42 sub do_search {
43   my ($self) = @_;
44
45   my $objects = $self->models->get;
46
47   return !@$objects     ? ()
48        : @$objects == 1 ? $self->redirect_to_object($objects->[0]->id)
49        :                  $self->redirect_to_search($::form->{term});
50 }
51
52 sub redirect_to_search {
53   SL::Controller::Base->new->url_for(
54     controller => 'oe.pl',
55     action     => 'orders',
56     type       => $_[0]->type,
57     vc         => $_[0]->vc,
58     all        => $_[1],
59     open       => 1,
60     closed     => 1,
61     sortdir    => 0,
62     (map {; "l_$_" => 'Y' } $_[0]->number, qw(transdate cusordnumber reqdate name employee netamount)),
63   );
64 }
65
66 sub redirect_to_object {
67   SL::Controller::Base->new->url_for(
68     controller => 'oe.pl',
69     action     => 'edit',
70     type       => $_[0]->type,
71     vc         => $_[0]->vc,
72     id         => $_[1],
73   );
74 }
75
76 sub type {
77   ...
78 }
79
80 sub cv {
81   ...
82 }
83
84 sub quotation {
85   $_[0]->type !~ /order/
86 }
87
88 sub number {
89   $_[0]->quotation ? 'quonumber' : 'ordnumber'
90 }
91
92 sub init_models {
93   my ($self) = @_;
94
95   SL::Controller::Helper::GetModels->new(
96     controller => $self,
97     model      => 'Order',
98     source     => {
99       filter => {
100         type => $self->type,
101         'all:substr:multi::ilike' => $::form->{term},
102       },
103     },
104     sorted     => {
105       _default   => {
106         by  => 'transdate',
107         dir => 0,
108       },
109       transdate => t8('Transdate'),
110     },
111     paginated  => {
112       per_page => 10,
113     },
114     with_objects => [ qw(customer vendor) ]
115   )
116 }
117
118 1;