Sprache auf ungültig setzen im Admin-Bereich
[kivitendo-erp.git] / SL / Controller / DownloadZip.pm
index 06f6221..33514c4 100644 (file)
@@ -20,7 +20,7 @@ sub action_download_orderitems_files {
   # in kivitendo.conf some regex may be defined:
   # For no values just let it commented out
   # PA = Produktionsauftrag, L = Lieferschein, ML = Materialliste
-  # If you want several options, please seperate the letter with '|'. Example: '^(PA|L).*'
+  # If you want several options, please separate the letter with '|'. Example: '^(PA|L).*'
   #set_sales_documenttype_for_delivered_quantity = '^(LS).*'
   #set_purchase_documenttype_for_delivered_quantity = '^(EL).*'
   #
@@ -43,29 +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 ) {
@@ -108,7 +99,7 @@ THis method must be inserted into the customer branch:
 
   ns.downloadOrderitemsAtt = function(type,id) {
     var rowcount  = $('input[name=rowcount]').val() - 1;
-         var data = {
+    var data = {
         action:     'FileManagement/download_zip',
         type:       type,
         object_id:  id,