X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/c3c267fe1364e57f5d52f5ee1f68242a7a61a3af..480d9a56bed666562d3c115fa2da4c09ba66ac8d:/SL/DO.pm diff --git a/SL/DO.pm b/SL/DO.pm index 2e61270d5..7f547f0b9 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -161,6 +161,7 @@ sub transactions { my $sth = prepare_query($form, $dbh, $query); foreach my $dord (@{ $form->{DO} }) { + next unless ($dord->{ordnumber}); do_statement($form, $sth, $query, $dord->{ordnumber}); ($dord->{oe_id}) = $sth->fetchrow_array(); } @@ -903,4 +904,46 @@ sub transfer_in_out { $main::lxdebug->leave_sub(); } +sub get_shipped_qty { + $main::lxdebug->enter_sub(); + + my $self = shift; + my %params = @_; + + Common::check_params(\%params, qw(type ordnumber)); + + my $myconfig = \%main::myconfig; + my $form = $main::form; + + my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + + my $notsales = $params{type} eq 'sales' ? '' : 'NOT'; + + my $query = + qq|SELECT doi.parts_id, doi.qty, doi.unit, p.unit AS partunit + FROM delivery_order_items doi + LEFT JOIN delivery_orders o ON (doi.delivery_order_id = o.id) + LEFT JOIN parts p ON (doi.parts_id = p.id) + WHERE ($notsales o.is_sales) + AND (o.ordnumber = ?)|; + + my %ship = (); + my $entries = selectall_hashref_query($form, $dbh, $query, $params{ordnumber}); + my $all_units = AM->retrieve_all_units(); + + foreach my $entry (@{ $entries }) { + $entry->{qty} *= $all_units->{$entry->{unit}}->{factor} / $all_units->{$entry->{partunit}}->{factor}; + + if (!$ship{$entry->{parts_id}}) { + $ship{$entry->{parts_id}} = $entry; + } else { + $ship{$entry->{parts_id}}->{qty} += $entry->{qty}; + } + } + + $main::lxdebug->leave_sub(); + + return %ship; +} + 1;