X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FARAP.pm;h=a2d786400bf267332098c8a7609cc494881f00f6;hb=991369b17d679e2855f4d5086d0b9769dc2ae1aa;hp=4d5c564aa5ac6e390424989d48a511055881fcfc;hpb=5ad7e1ed10430c3e9fbe4e9c9cfcbd409e547251;p=kivitendo-erp.git diff --git a/SL/ARAP.pm b/SL/ARAP.pm index 4d5c564aa..a2d786400 100644 --- a/SL/ARAP.pm +++ b/SL/ARAP.pm @@ -67,7 +67,8 @@ sub close_orders_if_billed { my $q_ordered = qq|SELECT oi.parts_id, oi.qty, oi.unit, p.unit AS partunit FROM orderitems oi LEFT JOIN parts p ON (oi.parts_id = p.id) - WHERE oi.trans_id = ?|; + WHERE oi.trans_id = ? + AND not oi.optional|; my $h_ordered = prepare_query($form, $dbh, $q_ordered); my @close_oe_ids; @@ -76,6 +77,10 @@ sub close_orders_if_billed { # said order. Again consider both direct conversions and indirect # conversions via delivery orders. foreach my $oe_id (@oe_ids) { + + # Dont close orders with periodic invoice + next if SL::DB::Manager::PeriodicInvoicesConfig->find_by(oe_id => $oe_id); + # Direct conversions "order -> invoice": @links = RecordLinks->get_links('dbh' => $dbh, 'from_table' => 'oe', @@ -154,7 +159,8 @@ sub close_orders_if_billed { 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();