1 package SL::Helper::MassPrintCreatePDF;
 
   8 our @EXPORT_OK = qw(create_massprint_pdf merge_massprint_pdf create_pdfs print_pdfs);
 
  14   my ($self, %params) = @_;
 
  16   foreach my $document (@{ $params{documents} }) {
 
  17     $params{document} = $document;
 
  18     push @pdf_file_names, $self->create_massprint_pdf(%params);
 
  21   return @pdf_file_names;
 
  24 sub create_massprint_pdf {
 
  25   my ($self, %params) = @_;
 
  26   my $form = Form->new('');
 
  29       return    => 'file_name',
 
  31   ## find_template may return a list !
 
  32   $create_params{template} = $self->find_template(name => $params{variables}->{formname}, printer_id => $params{printer_id});
 
  33   $form->{cwd}= POSIX::getcwd();
 
  35   $form->{$_} = $params{variables}->{$_} for keys %{ $params{variables} };
 
  37   $create_params{variable_content_types} = $form->get_variable_content_types();
 
  38   $params{document}->flatten_to_form($form, format_amounts => 1);
 
  39   # flatten_to_form sets payment_terms from customer/vendor - we do not want that here
 
  41   delete $form->{payment_terms} if !$form->{payment_id};
 
  42   for my $i (1 .. $form->{rowcount}) {
 
  43     $form->{"sellprice_$i"} = $form->{"fxsellprice_$i"};
 
  46   $form->prepare_for_printing;
 
  48   $form->{language}            = '_' . $form->{language};
 
  49   $form->{attachment_filename} = $form->generate_attachment_filename;
 
  51   my $pdf_filename = $self->create_pdf(%create_params);
 
  53   if ($::instance_conf->get_webdav_documents && !$form->{preview}) {
 
  54     my $webdav = SL::Webdav->new(
 
  55       type     => $params{document}->type,
 
  56       number   => $params{document}->record_number,
 
  58     my $webdav_file = SL::Webdav::File->new(
 
  60       filename => $form->{attachment_filename},
 
  63       $webdav_file->store(file => $pdf_filename);
 
  66       push @{ $params{errors} }, $@ if exists $params{errors};
 
  70   if ( $::instance_conf->get_doc_storage && ! $form->{preview}) {
 
  71     $self->append_general_pdf_attachments(filepath => $pdf_filename, type => $form->{type} );
 
  72     $form->{tmpfile} = $pdf_filename;
 
  73     $form->{id}      = $params{document}->id;
 
  74     $self->store_pdf($form);
 
  76   $form->{id} = $params{document}->id;
 
  77   if ( ! $form->{preview} ) {
 
  78     if ( ref($params{document}) eq 'SL::DB::DeliveryOrder' ) {
 
  79       $form->{snumbers} = "ordnumber_" . $params{document}->donumber;
 
  82       $form->{snumbers} = "unknown";
 
  84     $form->{addition} = "PRINTED";
 
  85     $form->{what_done} = $::form->{type};
 
  91 sub merge_massprint_pdf {
 
  92   my ($self, %params)     = @_;
 
  93   return unless $params{file_names} && $params{type};
 
  95   my $job_obj = $self->{job_obj};
 
  96   my $data    = $job_obj->data_as_hash;
 
  97   my @pdf_file_names = @{$params{file_names}};
 
 100     my $file_name = 'mass_'.$params{type}.'_'.$job_obj->id . '.pdf';
 
 101     my $sfile     = SL::SessionFile->new($file_name, mode => 'w', session_id => $data->{session_id});
 
 103     $data->{pdf_file_name} = $sfile->file_name;
 
 105     $self->merge_pdfs(file_names => \@pdf_file_names, bothsided => $data->{bothsided}, out_path => $data->{pdf_file_name});
 
 106     unlink @pdf_file_names;
 
 111     push @{ $data->{print_errors} }, { message => $@ };
 
 114   $job_obj->update_attributes(data_as_hash => $data);
 
 120   my $job_obj         = $self->{job_obj};
 
 121   my $data            = $job_obj->data_as_hash;
 
 122   my $printer_id      = $data->{printer_id};
 
 123   my $copy_printer_id = $data->{copy_printer_id};
 
 125   return if !$printer_id;
 
 129   foreach  my $local_printer_id ($printer_id, $copy_printer_id) {
 
 130     next unless $local_printer_id;
 
 132       ->new(id => $local_printer_id)
 
 134       ->print_document(file_name => $data->{pdf_file_name});
 
 147 SL::Helper::MassPrint_CreatePDF
 
 152 This Helper used bei Background Processing for Mass Printing.
 
 153 The redundant way to fill data for createPDF is concentrated into this helper.
 
 154 There are some additional settings for printing which are missed in CreatePDF Helper
 
 155 and also the appending of generic PDF-Documents.
 
 157 (This extension may be included in the CreatePDF Helper).
 
 162 L<SL::Helper::CreatePDF>
 
 166 =head2 C<create_massprint_pdf PARAMS>
 
 168 a tempory $form is used to set
 
 172 =item 1. content types
 
 174 =item 2. flatten_to_form
 
 176 =item 3. prepare_for_printing
 
 182 before printing is done
 
 184 Recognized parameters are (not a complete list):
 
 188 =item * C<errors> – optional. If given, it must be an array ref. This will be
 
 189 filled with potential errors.
 
 196 Martin Helmling E<lt>martin.helmling@opendynamic.deE<gt>