]> wagnertech.de Git - mfinanz.git/blob - SL/Controller/TopQuickSearch/DeliveryOrder.pm
Merge branch 'master' of http://wagnertech.de/git/mfinanz
[mfinanz.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 => 'controller.pl',
75     action     => 'DeliveryOrder/edit',
76     id         => $_[1],
77     type       => $_[0]->type,
78   );
79 }
80
81 sub init_models {
82   my ($self) = @_;
83
84   SL::Controller::Helper::GetModels->new(
85     controller => $self,
86     model      => 'DeliveryOrder',
87     source     => {
88       filter => {
89         type => $self->type,
90         'all:substr:multi::ilike' => $::form->{term},
91       },
92     },
93     sorted     => {
94       _default   => {
95         by  => 'transdate',
96         dir => 0,
97       },
98       transdate => t8('Date'),
99     },
100     paginated  => {
101       per_page => 10,
102     },
103     with_objects => [ qw(customer vendor orderitems) ]
104   )
105 }
106
107 1;