$self->prepare_report;
- $self->{orderitems} = $self->get_models(%{ $self->db_args });
+ my $orderitems = $self->get_models(%{ $self->db_args });
- $self->list_objects;
+ $self->report_generator_list_objects(report => $self->{report}, objects => $orderitems);
}
# private functions
rl.from_table ='oe' AND
rl.to_table = 'delivery_orders'
)
+
+ UNION ALL
+
+ -- 5. In case someone deleted a line of the delivery_order there will be a record_link (4 fails)
+ -- but there won't be a delivery_order_items to find (3 fails too). Search for orphaned orderitems this way
+ SELECT oi.id FROM orderitems AS oi, oe, record_links AS rl
+ WHERE
+ rl.from_table = 'oe' AND
+ rl.to_table = 'delivery_orders' AND
+
+ oi.trans_id = rl.from_id AND
+ oi.parts_id NOT IN (
+ SELECT doi.parts_id FROM delivery_order_items AS doi WHERE doi.delivery_order_id = rl.to_id
+ ) AND
+
+ oe.id = oi.trans_id AND
+
+ oe.customer_id IS NOT NULL AND
+ (oe.quotation = 'f' OR oe.quotation IS NULL) AND
+ NOT oe.closed
" ],
)
];
$self->{report} = $report;
my @columns = qw(reqdate customer ordnumber partnumber description qty shipped_qty not_shipped_qty);
- my @sortable = qw(reqdate customer ordnumber partnumber description );
+ my @sortable = qw(reqdate customer ordnumber partnumber description);
my %column_defs = (
reqdate => { sub => sub { $_[0]->reqdate_as_date || $_[0]->order->reqdate_as_date } },
description => { sub => sub { $_[0]->description },
- obj_link => sub { $self->link_to($_[0]->part) } },
+ obj_link => sub { $self->link_to($_[0]->part) } },
partnumber => { sub => sub { $_[0]->part->partnumber },
- obj_link => sub { $self->link_to($_[0]->part) } },
+ obj_link => sub { $self->link_to($_[0]->part) } },
qty => { sub => sub { $_[0]->qty_as_number . ' ' . $_[0]->unit } },
shipped_qty => { sub => sub { $::form->format_amount(\%::myconfig, $_[0]->shipped_qty, 2) . ' ' . $_[0]->unit } },
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) } },
+ obj_link => sub { $self->link_to($_[0]->order) } },
customer => { sub => sub { $_[0]->order->customer->name },
- obj_link => sub { $self->link_to($_[0]->order->customer) } },
+ obj_link => sub { $self->link_to($_[0]->order->customer) } },
);
map { $column_defs{$_}->{text} = $::locale->text( $self->get_sort_spec->{$_}->{title} ) } keys %column_defs;
controller_class => 'DeliveryPlan',
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', { no_output => 1, partial => 1 }),
- raw_bottom_info_text => $self->render('delivery_plan/report_bottom', { no_output => 1, partial => 1 }),
+ raw_top_info_text => $self->render('delivery_plan/report_top', { output => 0 }),
+ raw_bottom_info_text => $self->render('delivery_plan/report_bottom', { output => 0 }),
title => $::locale->text('Delivery Plan'),
allow_pdf_export => 1,
allow_csv_export => 1,
$self->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable);
$self->disable_pagination if $report->{options}{output_format} =~ /^(pdf|csv)$/i;
-
- $self->{report_data} = {
- column_defs => \%column_defs,
- columns => \@columns,
- };
-}
-
-sub list_objects {
- my ($self) = @_;
- my $column_defs = $self->{report_data}{column_defs};
- for my $obj (@{ $self->{orderitems} || [] }) {
- $self->{report}->add_data({
- map {
- $_ => {
- data => $column_defs->{$_}{sub} ? $column_defs->{$_}{sub}->($obj)
- : $obj->can($_) ? $obj->$_
- : $obj->{$_},
- link => $column_defs->{$_}{obj_link} ? $column_defs->{$_}{obj_link}->($obj) : '',
- },
- } @{ $self->{report_data}{columns} || {} }
- });
- }
-
- return $self->{report}->generate_with_headers;
}
sub make_filter_summary {