]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/DO.pm
------------------------------------------------------------------------
[kivitendo-erp.git] / SL / DO.pm
index 44050b89b7032c24ade0da1c8f517703a05d0eac..c844b83e8903e63cc62df11a12e00d0452cae1bc 100644 (file)
--- a/SL/DO.pm
+++ b/SL/DO.pm
@@ -342,9 +342,9 @@ sub save {
   # save printed, emailed, queued
   $form->save_status($dbh);
 
-  $self->close_order_if_delivered('do_id' => $form->{id},
-                                  'type'  => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase',
-                                  'dbh'   => $dbh,);
+  $self->mark_order_if_delivered('do_id' => $form->{id},
+                                 'type'  => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase',
+                                 'dbh'   => $dbh,);
 
   my $rc = $dbh->commit();
 
@@ -357,7 +357,7 @@ sub save {
   return $rc;
 }
 
-sub close_order_if_delivered {
+sub mark_order_if_delivered {
   $main::lxdebug->enter_sub();
 
   my $self   = shift;
@@ -434,6 +434,33 @@ sub close_order_if_delivered {
   $main::lxdebug->leave_sub();
 }
 
+sub close_orders {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(ids));
+
+  if (('ARRAY' ne ref $params{ids}) || !scalar @{ $params{ids} }) {
+    $main::lxdebug->leave_sub();
+    return;
+  }
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  my $query    = qq|UPDATE delivery_orders SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar(@{ $params{ids} })) . qq|)|;
+
+  do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} });
+
+  $dbh->commit() unless ($params{dbh});
+
+  $main::lxdebug->leave_sub();
+}
+
 sub delete {
   $main::lxdebug->enter_sub();