Erste Version GetModels rewrite
[kivitendo-erp.git] / SL / Controller / DeliveryPlan.pm
index b8ee1c4..7d394be 100644 (file)
@@ -6,34 +6,43 @@ use parent qw(SL::Controller::Base);
 use Clone qw(clone);
 use SL::DB::OrderItem;
 use SL::Controller::Helper::GetModels;
-use SL::Controller::Helper::Paginated;
-use SL::Controller::Helper::Sorted;
-use SL::Controller::Helper::Filtered;
 use SL::Controller::Helper::ReportGenerator;
 use SL::Locale::String;
 
 use Rose::Object::MakeMethods::Generic (
   scalar => [ qw(db_args flat_filter) ],
+  'scalar --get_set_init' => [ qw(models) ],
 );
 
 __PACKAGE__->run_before(sub { $::auth->assert('sales_order_edit'); });
 
-__PACKAGE__->make_filtered(
-  MODEL             => 'OrderItem',
-  LAUNDER_TO        => 'filter'
-);
-__PACKAGE__->make_paginated(
-  MODEL         => 'OrderItem',
-  ONLY          => [ qw(list) ],
-);
-
-__PACKAGE__->make_sorted(
-  MODEL             => 'OrderItem',
-  ONLY              => [ qw(list) ],
-
-  DEFAULT_BY        => 'reqdate',
-  DEFAULT_DIR       => 1,
-
+#__PACKAGE__->make_filtered(
+#  MODEL             => 'OrderItem',
+#  LAUNDER_TO        => 'filter'
+#);
+#__PACKAGE__->make_paginated(
+#  MODEL         => 'OrderItem',
+#  ONLY          => [ qw(list) ],
+#);
+#
+#__PACKAGE__->make_sorted(
+#  MODEL             => 'OrderItem',
+#  ONLY              => [ qw(list) ],
+#
+#  DEFAULT_BY        => 'reqdate',
+#  DEFAULT_DIR       => 1,
+#
+#  reqdate           => t8('Reqdate'),
+#  description       => t8('Description'),
+#  partnumber        => t8('Part Number'),
+#  qty               => t8('Qty'),
+#  shipped_qty       => t8('shipped'),
+#  not_shipped_qty   => t8('not shipped'),
+#  ordnumber         => t8('Order'),
+#  customer          => t8('Customer'),
+#);
+
+my %sort_columns = (
   reqdate           => t8('Reqdate'),
   description       => t8('Description'),
   partnumber        => t8('Part Number'),
@@ -121,7 +130,7 @@ sub action_list {
 
   $self->make_filter_summary;
 
-  my $orderitems = $self->get_models(query => $delivery_plan_query, with_objects => [ 'order', 'order.customer', 'part' ]);
+  my $orderitems = $self->models->get;
 
   $self->prepare_report;
   $self->report_generator_list_objects(report => $self->{report}, objects => $orderitems);
@@ -149,11 +158,11 @@ sub prepare_report {
     not_shipped_qty   => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty - $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit } },
     ordnumber         => {      sub => sub { $_[0]->order->ordnumber                                                         },
                            obj_link => sub { $self->link_to($_[0]->order)                                                    } },
-    customer          => {      sub => sub { $_[0]->order->customer->name                                                    },
+    customer          => {      sub => sub { return ''; $_[0]->order->customer->name                                                    },
                            obj_link => sub { $self->link_to($_[0]->order->customer)                                          } },
   );
 
-  map { $column_defs{$_}->{text} = $::locale->text( $self->get_sort_spec->{$_}->{title} ) } keys %column_defs;
+  $column_defs{$_}->{text} = $sort_columns{$_} for keys %column_defs;
 
   $report->set_options(
     std_column_visibility => 1,
@@ -161,7 +170,7 @@ sub prepare_report {
     output_format         => 'HTML',
     top_info_text         => $::locale->text('Delivery Plan for currently outstanding sales orders'),
     raw_top_info_text     => $self->render('delivery_plan/report_top',    { output => 0 }),
-    raw_bottom_info_text  => $self->render('delivery_plan/report_bottom', { output => 0 }),
+    raw_bottom_info_text  => $self->render('delivery_plan/report_bottom', { output => 0 }, models => $self->models),
     title                 => $::locale->text('Delivery Plan'),
     allow_pdf_export      => 1,
     allow_csv_export      => 1,
@@ -170,9 +179,9 @@ sub prepare_report {
   $report->set_column_order(@columns);
   $report->set_export_options(qw(list filter));
   $report->set_options_from_form;
-  $self->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable);
+  $self->models->sorted->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable);
 
-  $self->disable_pagination if $report->{options}{output_format} =~ /^(pdf|csv)$/i;
+  $self->models->paginated->disable_pagination if $report->{options}{output_format} =~ /^(pdf|csv)$/i;
 }
 
 sub make_filter_summary {
@@ -209,6 +218,27 @@ sub make_filter_summary {
   $self->{filter_summary} = join ', ', @filter_strings;
 }
 
+sub init_models {
+  my ($self) = @_;
+
+  SL::Controller::Helper::GetModels->new(
+    controller => $self,
+    model  => 'OrderItem', # defaults to controller
+    filtered => {
+      launder_to => 'filter',
+    },
+    sorted => {
+      _default => {
+        by        => 'reqdate',
+        dir       => 1,
+      },
+      %sort_columns,
+    },
+    query => $delivery_plan_query,
+    with_objects => [ 'order', 'order.customer', 'part' ],
+  );
+}
+
 sub link_to {
   my ($self, $object, %params) = @_;