X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/95dd02de03f618ec5d88aa9027eba2212e85a38a..cbb8eb078305a3eeca9c6c192a66176676da54f8:/SL/Helper/ShippedQty.pm diff --git a/SL/Helper/ShippedQty.pm b/SL/Helper/ShippedQty.pm index 3ad46197e..a2f670120 100644 --- a/SL/Helper/ShippedQty.pm +++ b/SL/Helper/ShippedQty.pm @@ -270,6 +270,22 @@ sub normalize_input { $self->shipped_qty({}); } +# some of the invocations never need to load all orderitems to copute their answers +# delivered however needs oi_qty to be set for each orderitem to decide whether +# delivered should be set or not. +sub ensure_all_orderitems_for_orders { + my ($self) = @_; + + return if $self->fill_up; + + my $oi_query = sprintf $fill_up_oi_query, join (', ', ('?')x@{ $self->oe_ids }); + my $oi = selectall_hashref_query($::form, $self->dbh, $oi_query, @{ $self->oe_ids }); + for (@$oi) { + $self->{oi_qty}{ $_->{id} } //= $_->{qty}; + $self->{oi2oe}{ $_->{id} } //= $_->{trans_id}; + } +} + sub available_item_identity_fields { map { [ $_ => $item_identity_fields{$_} ] } @known_item_identity_fields; } @@ -291,6 +307,9 @@ sub init_oi_qty { {} } sub init_matches { [] } sub init_delivered { my ($self) = @_; + + $self->ensure_all_orderitems_for_orders; + my $d = { }; for (keys %{ $self->oi_qty }) { my $oe_id = $self->oi2oe->{$_};