epic-ts
[kivitendo-erp.git] / SL / ARAP.pm
index 4d5c564..a2d7864 100644 (file)
@@ -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();