Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3ce13f69

Von Moritz Bunkus vor mehr als 12 Jahren hinzugefügt

  • ID 3ce13f69f98665e51f3e9d49df4a6255705d59ac
  • Vorgänger 1260ff14
  • Nachfolger 28cda5b6

DeliveryPlan-Controller auf Sorted-Controller-Helper umstellen

Unterschiede anzeigen:

SL/Controller/DeliveryPlan.pm
7 7
use SL::DB::OrderItem;
8 8
use SL::Controller::Helper::GetModels;
9 9
use SL::Controller::Helper::Paginated;
10
use SL::Controller::Helper::Sorted;
10 11
use SL::Controller::Helper::ParseFilter;
11 12
use SL::Controller::Helper::ReportGenerator;
12 13

  
13
use Rose::Object::MakeMethods::Generic
14
(
15
  scalar => [ qw(db_args) ],
14
use Rose::Object::MakeMethods::Generic (
15
  scalar => [ qw(db_args flat_filter) ],
16 16
);
17 17

  
18 18
__PACKAGE__->run_before(sub { $::auth->assert('sales_order_edit'); });
19 19

  
20
__PACKAGE__->get_models_url_params(sub {
21
  my ($self) = @_;
22
  return (
23
    %{ $self->{flat_filter} || {} },
24
    sort_dir => $self->{sort_dir},
25
    sort_by  => $self->{sort_by},
26
  );
27
});
20
__PACKAGE__->get_models_url_params('flat_filter');
28 21
__PACKAGE__->make_paginated(
29 22
  MODEL         => 'OrderItem',
30 23
  PAGINATE_ARGS => 'db_args',
31 24
  ONLY          => [ qw(list) ],
32 25
);
33 26

  
27
__PACKAGE__->make_sorted(
28
  MODEL       => 'OrderItem',
29
  ONLY        => [ qw(list) ],
30

  
31
  DEFAULT_BY  => 'reqdate',
32
  DEFAULT_DIR => 1,
33

  
34
  reqdate     => 'Reqdate',
35
  description => 'Description',
36
  partnumber  => 'Part Number',
37
  qty         => 'Qty',
38
  missing     => 'Missing qty',
39
  shipped_qty => 'shipped',
40
  ordnumber   => 'Order',
41
  customer    => 'Customer',
42
);
43

  
34 44
sub action_list {
35 45
  my ($self) = @_;
36 46
  my %list_params = (
37
    sort_by  => $::form->{sort_by} || 'reqdate',
38
    sort_dir => $::form->{sort_dir},
39 47
    filter   => $::form->{filter},
40 48
  );
41 49

  
42 50
  $self->db_args($self->setup_for_list(%list_params));
43
  $self->{flat_filter} = { map { $_->{key} => $_->{value} } $::form->flatten_variables('filter') };
51
  $self->flat_filter({ map { $_->{key} => $_->{value} } $::form->flatten_variables('filter') });
44 52
  $self->make_filter_summary;
45 53

  
46 54
  my $top    = $::form->parse_html_template('delivery_plan/report_top', { FORM => $::form, SELF => $self });
......
52 60
      raw_bottom_info_text => $bottom,
53 61
      controller_class     => 'DeliveryPlan',
54 62
    },
55
    report_generator_export_options => [
56
      'list', qw(filter sort_by sort_dir),
57
    ],
63
    report_generator_export_options => [ qw(list filter sort_by sort_dir) ],
58 64
  );
59 65

  
60 66
  $self->{orderitems} = $self->get_models(%{ $self->db_args });
......
73 79
      with_objects => [ 'order', 'order.customer', 'part' ],
74 80
      launder_to => $self->{filter},
75 81
    ),
76
    sort_by => $self->set_sort_params(%params),
77 82
  );
78 83

  
79 84
  $args{query} = [ @{ $args{query} || [] },
......
133 138
  return \%args;
134 139
}
135 140

  
136
sub set_sort_params {
137
  my ($self, %params) = @_;
138
  my $sort_str;
139
  ($self->{sort_by}, $self->{sort_dir}, $sort_str) =
140
    SL::DB::Manager::OrderItem->make_sort_string(%params);
141
  return $sort_str;
142
}
143

  
144 141
sub prepare_report {
145 142
  my ($self, %params) = @_;
146 143

  
......
153 150
  my @sortable = qw(reqdate partnumber description                 ordnumber customer);
154 151

  
155 152
  my %column_defs = (
156
    reqdate                 => { text => $::locale->text('Reqdate'),
157
                                  sub => sub { $_[0]->reqdate_as_date || $_[0]->order->reqdate_as_date }},
158
    description             => { text => $::locale->text('Description'),
159
                                  sub => sub { $_[0]->description },
160
                             obj_link => sub { $self->link_to($_[0]->part) }},
161
    partnumber              => { text => $::locale->text('Part Number'),
162
                                  sub => sub { $_[0]->part->partnumber },
163
                             obj_link => sub { $self->link_to($_[0]->part) }},
164
    qty                     => { text => $::locale->text('Qty'),
165
                                  sub => sub { $_[0]->qty_as_number . ' ' . $_[0]->unit }},
166
    missing                 => { text => $::locale->text('Missing qty'),
167
                                  sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty - $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit }},
168
    shipped_qty             => { text => $::locale->text('shipped'),
169
                                  sub => sub { $::form->format_amount(\%::myconfig, $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit }},
170
    ordnumber               => { text => $::locale->text('Order'),
171
                                  sub => sub { $_[0]->order->ordnumber },
172
                             obj_link => sub { $self->link_to($_[0]->order) }},
173
    customer                => { text => $::locale->text('Customer'),
174
                                  sub => sub { $_[0]->order->customer->name },
175
                             obj_link => sub { $self->link_to($_[0]->order->customer) }},
153
    reqdate                 => {      sub => sub { $_[0]->reqdate_as_date || $_[0]->order->reqdate_as_date }},
154
    description             => {      sub => sub { $_[0]->description },
155
                                 obj_link => sub { $self->link_to($_[0]->part) }},
156
    partnumber              => {      sub => sub { $_[0]->part->partnumber },
157
                                 obj_link => sub { $self->link_to($_[0]->part) }},
158
    qty                     => {      sub => sub { $_[0]->qty_as_number . ' ' . $_[0]->unit }},
159
    missing                 => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty - $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit }},
160
    shipped_qty             => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit }},
161
    ordnumber               => {      sub => sub { $_[0]->order->ordnumber },
162
                                 obj_link => sub { $self->link_to($_[0]->order) }},
163
    customer                => {      sub => sub { $_[0]->order->customer->name },
164
                                 obj_link => sub { $self->link_to($_[0]->order->customer) }},
176 165
  );
177 166

  
167
  map { $column_defs{$_}->{text} = $::locale->text( $self->get_sort_spec->{$_}->{title} ) } keys %column_defs;
168

  
169
  my %current_sort_params = $self->get_current_sort_params;
178 170

  
179 171
  for my $col (@sortable) {
180 172
    $column_defs{$col}{link} = $self->get_callback(
173
      # TODO: column header links from helper
181 174
      sort_by  => $col,
182
      sort_dir => ($self->{sort_by} eq $col ? 1 - $self->{sort_dir} : $self->{sort_dir}),
175
      sort_dir => ($current_sort_params{by} eq $col ? 1 - $current_sort_params{dir} : $current_sort_params{dir}),
183 176
    );
184 177
  }
185 178

  
......
188 181
  $report->set_columns(%column_defs);
189 182
  $report->set_column_order(@columns);
190 183
  $report->set_options(allow_pdf_export => 1, allow_csv_export => 1);
191
  $report->set_sort_indicator(%params);
184
  $report->set_sort_indicator($current_sort_params{by}, $current_sort_params{dir});
192 185
  $report->set_export_options(@{ $params{report_generator_export_options} || [] });
193 186
  $report->set_options(
194 187
    %{ $params{report_generator_options} || {} },

Auch abrufbar als: Unified diff