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'),
$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);
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,
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,
$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 {
$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) = @_;