Sprache auf ungültig setzen im Admin-Bereich
[kivitendo-erp.git] / SL / Controller / DownloadZip.pm
index 57c436a..33514c4 100644 (file)
@@ -43,31 +43,20 @@ sub action_download_orderitems_files {
   #my $name_encoding = 'cp850';
   my $name_encoding = 'UTF-8';
 
-  # today only sales_order implementation !
-  if ( $object_id && $object_type eq 'sales_order' && $element_type eq 'part' ) {
+  if (   $object_id
+      && ($object_type =~ m{^(?:sales_order|purchase_order|sales_quotation|request_quotation)$})
+      && ($element_type eq 'part')) {
     my $orderitems = SL::DB::Manager::OrderItem->get_all(query => ['order.id' => $object_id ],
                                                          with_objects => [ 'order', 'part' ],
                                                          sort_by => 'part.partnumber ASC');
-    my $part_id = 0;
     foreach my $item ( @{$orderitems} ) {
-      next if $part_id == $item->parts_id;
-
       my @files = SL::File->get_all(object_id   => $item->parts_id,
                                     object_type => $element_type,
                                   );
-      my @wanted_files;
-      ## also for filtering if needed:
-      # if ( $doctype ) {
-      #   @wanted_files = grep { $_->{file_name} =~ /$doctype/ } @files;
-      # } else {
-      @wanted_files = @files;
-      # }
-      if ( scalar (@wanted_files) > 0 ) {
-        $zip->addDirectory($item->part->partnumber);
-        $zip->addFile($_->get_file,
-                      Encode::encode($name_encoding,$item->part->partnumber.'/'.$_->{file_name})
-                      ) for @wanted_files;
-      }
+      next unless @files;
+
+      $zip->addDirectory($item->part->partnumber);
+      $zip->addFile($_->get_file, Encode::encode($name_encoding, $item->part->partnumber . '/' . $_->db_file->file_name)) for @files;
     }
   }
   unless ( $zip->writeToFileNamed($sfile->file_name) == Archive::Zip::AZ_OK ) {