X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FDeliveryPlan.pm;h=db166e376670ec6c52b103d471c5d11e51b0e3ae;hb=55af6244bd721f294ff5eee7e9357a3217318e5e;hp=5ce462b40278578d1b0021553db15ee8e4df1b5e;hpb=3e52fa98a814c30ab8a94018d6e68fafa4c2259c;p=kivitendo-erp.git diff --git a/SL/Controller/DeliveryPlan.pm b/SL/Controller/DeliveryPlan.pm index 5ce462b40..db166e376 100644 --- a/SL/Controller/DeliveryPlan.pm +++ b/SL/Controller/DeliveryPlan.pm @@ -26,19 +26,20 @@ __PACKAGE__->make_paginated( ); __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'), - ordnumber => t8('Order'), - customer => t8('Customer'), + 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'), ); sub action_list { @@ -118,6 +119,26 @@ sub setup_for_list { 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 " ], ) ]; @@ -131,21 +152,22 @@ sub prepare_report { my $report = SL::ReportGenerator->new(\%::myconfig, $::form); $self->{report} = $report; - my @columns = qw(reqdate customer ordnumber partnumber description qty shipped_qty); - my @sortable = qw(reqdate customer ordnumber partnumber description ); + my @columns = qw(reqdate customer ordnumber partnumber description qty shipped_qty not_shipped_qty); + 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) } }, - partnumber => { sub => sub { $_[0]->part->partnumber }, - 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 } }, - ordnumber => { sub => sub { $_[0]->order->ordnumber }, - obj_link => sub { $self->link_to($_[0]->order) } }, - customer => { sub => sub { $_[0]->order->customer->name }, - obj_link => sub { $self->link_to($_[0]->order->customer) } }, + 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) } }, + partnumber => { sub => sub { $_[0]->part->partnumber }, + 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) } }, + customer => { sub => sub { $_[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;