X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FARAP.pm;h=121ea065ac40d4acb51a65711a0f6fc31afe017d;hb=f7b15d4334848fad1bcd0b569eff5139f9a6ba4d;hp=dd2bd8e0257c3791641d4a1d3f27b2dff3433b63;hpb=5e213cbd85d09fff3b43c5026d6c65cf2676cd3d;p=kivitendo-erp.git diff --git a/SL/ARAP.pm b/SL/ARAP.pm index dd2bd8e02..121ea065a 100644 --- a/SL/ARAP.pm +++ b/SL/ARAP.pm @@ -4,6 +4,7 @@ use SL::AM; use SL::Common; use SL::DBUtils; use SL::MoreCommon; +use SL::DB; use Data::Dumper; use strict; @@ -19,7 +20,7 @@ sub close_orders_if_billed { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + my $dbh = $params{dbh} || SL::DB->client->dbh; # First, find all order IDs from which this invoice has been # created. Either directly by a conversion from an order to this invoice @@ -60,7 +61,7 @@ sub close_orders_if_billed { my $q_billed = qq|SELECT i.parts_id, i.qty ${qtyfactor} AS qty, i.unit, p.unit AS partunit FROM invoice i LEFT JOIN parts p ON (i.parts_id = p.id) - WHERE i.trans_id = ?|; + WHERE i.trans_id = ? AND i.assemblyitem is false|; my $h_billed = prepare_query($form, $dbh, $q_billed); my $q_ordered = qq|SELECT oi.parts_id, oi.qty, oi.unit, p.unit AS partunit @@ -150,10 +151,11 @@ sub close_orders_if_billed { # Close orders that have been billed fully. if (scalar @close_oe_ids) { - my $query = qq|UPDATE oe SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar @close_oe_ids) . qq|)|; - do_query($form, $dbh, $query, @close_oe_ids); - - $dbh->commit unless $params{dbh}; + SL::DB->client->with_transaction(sub { + my $query = qq|UPDATE oe SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar @close_oe_ids) . qq|)|; + do_query($form, $dbh, $query, @close_oe_ids); + 1; + }) or do { die SL::DB->client->error }; } $main::lxdebug->leave_sub();