# 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).*'
#
#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 ) {