1 package SL::Helper::MassPrintCreatePDF;
6 our @EXPORT_OK = qw(create_massprint_pdf merge_massprint_pdf create_pdfs print_pdfs);
12 my ($self, %params) = @_;
14 foreach my $document (@{ $params{documents} }) {
15 $params{document} = $document;
16 push @pdf_file_names, $self->create_massprint_pdf(%params);
19 return @pdf_file_names;
22 sub create_massprint_pdf {
23 my ($self, %params) = @_;
24 my $form = Form->new('');
27 return => 'file_name',
29 ## find_template may return a list !
30 $create_params{template} = $self->find_template(name => $params{variables}->{formname}, printer_id => $params{printer_id});
31 $form->{cwd}= POSIX::getcwd();
33 $form->{$_} = $params{variables}->{$_} for keys %{ $params{variables} };
35 $create_params{variable_content_types} = $form->get_variable_content_types();
36 $params{document}->flatten_to_form($form, format_amounts => 1);
37 # flatten_to_form sets payment_terms from customer/vendor - we do not want that here
39 delete $form->{payment_terms} if !$form->{payment_id};
40 for my $i (1 .. $form->{rowcount}) {
41 $form->{"sellprice_$i"} = $form->{"fxsellprice_$i"};
44 $form->prepare_for_printing;
45 $form->{attachment_filename} = $form->generate_attachment_filename;
47 my $pdf_filename = $self->create_pdf(%create_params);
49 if ( $::instance_conf->get_doc_storage && ! $form->{preview}) {
50 $self->append_general_pdf_attachments(filepath => $pdf_filename, type => $form->{type} );
51 $form->{tmpfile} = $pdf_filename;
52 $form->{id} = $params{document}->id;
53 $self->store_pdf($form);
55 $form->{id} = $params{document}->id;
56 if ( ! $form->{preview} ) {
57 if ( ref($params{document}) eq 'SL::DB::DeliveryOrder' ) {
58 $form->{snumbers} = "ordnumber_" . $params{document}->donumber;
61 $form->{snumbers} = "unknown";
63 $form->{addition} = "PRINTED";
64 $form->{what_done} = $::form->{type};
70 sub merge_massprint_pdf {
71 my ($self, %params) = @_;
72 return unless $params{file_names} && $params{type};
74 my $job_obj = $self->{job_obj};
75 my $data = $job_obj->data_as_hash;
76 my @pdf_file_names = @{$params{file_names}};
79 my $file_name = 'mass_'.$params{type}.'_'.$job_obj->id . '.pdf';
80 my $sfile = SL::SessionFile->new($file_name, mode => 'w', session_id => $data->{session_id});
82 $data->{pdf_file_name} = $sfile->file_name;
84 $self->merge_pdfs(file_names => \@pdf_file_names, bothsided => $data->{bothsided}, out_path => $data->{pdf_file_name});
85 unlink @pdf_file_names;
90 push @{ $data->{print_errors} }, { message => $@ };
93 $job_obj->update_attributes(data_as_hash => $data);
99 my $job_obj = $self->{job_obj};
100 my $data = $job_obj->data_as_hash;
101 my $printer_id = $data->{printer_id};
102 my $copy_printer_id = $data->{copy_printer_id};
104 return if !$printer_id;
108 foreach my $local_printer_id ($printer_id, $copy_printer_id) {
109 next unless $local_printer_id;
111 ->new(id => $local_printer_id)
113 ->print_document(file_name => $data->{pdf_file_name});
126 SL::Helper::MassPrint_CreatePDF
131 This Helper used bei Background Processing for Mass Printing.
132 The redundant way to fill data for createPDF is concentrated into this helper.
133 There are some additional settings for printing which are missed in CreatePDF Helper
134 and also the appending of generic PDF-Documents.
136 (This extension may be included in the CreatePDF Helper).
141 L<SL::Helper::CreatePDF>
145 =head2 C<create_massprint_pdf PARAMS>
147 a tempory $form is used to set
151 =item 1. content types
153 =item 2. flatten_to_form
155 =item 3. prepare_for_printing
161 before printing is done
166 Martin Helmling E<lt>martin.helmling@opendynamic.deE<gt>