X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FLetter.pm;h=2af59b07d84ebdbf36f86366e98f55d7751d9355;hb=c7241bf7c547d63999898dee7b5dd486e4d122d3;hp=f1109d72cf743d4f797692eed0a58b52e27944d5;hpb=ea5d75b52e043fb3f0d264056df6007049d6a3fd;p=kivitendo-erp.git diff --git a/SL/Controller/Letter.pm b/SL/Controller/Letter.pm index f1109d72c..2af59b07d 100644 --- a/SL/Controller/Letter.pm +++ b/SL/Controller/Letter.pm @@ -3,14 +3,17 @@ package SL::Controller::Letter; use strict; use parent qw(SL::Controller::Base); +use Carp; use POSIX qw(strftime); use SL::Controller::Helper::GetModels; use SL::Controller::Helper::ReportGenerator; +use SL::CT; use SL::DB::Letter; use SL::DB::LetterDraft; use SL::DB::Employee; use SL::Helper::Flash qw(flash); use SL::Helper::CreatePDF; +use SL::Helper::PrintOptions; use SL::Locale::String qw(t8); use SL::IS; use SL::ReportGenerator; @@ -173,12 +176,14 @@ sub action_print_letter { $self->export_letter_to_form($letter); $::form->{formname} = "letter"; - $::form->{format} = "pdf"; + $::form->{type} = "letter"; + $::form->{format} = "pdf"; my $language_saved = $::form->{language_id}; my $greeting_saved = $::form->{greeting}; my $cp_id_saved = $::form->{cp_id}; + $::form->{customer_id} = $self->letter->vc_id; IS->customer_details(\%::myconfig, $::form); if (!$cp_id_saved) { @@ -200,17 +205,27 @@ sub action_print_letter { $::form->get_employee_data('prefix' => 'employee', 'id' => $letter->{employee_id}); $::form->get_employee_data('prefix' => 'salesman', 'id' => $letter->{salesman_id}); + my ($template_file, @template_files) = SL::Helper::CreatePDF->find_template( + name => 'letter', + printer_id => $::form->{printer_id}, + language_id => $::form->{language_id}, + formname => 'letter', + format => 'pdf', + ); + + if (!defined $template_file) { + $::form->error($::locale->text('Cannot find matching template for this print request. Please contact your template maintainer. I tried these: #1.', join ', ', map { "'$_'"} @template_files)); + } + my %create_params = ( - template => scalar(SL::Helper::CreatePDF->find_template( - name => 'letter', - printer_id => $::form->{printer_id}, - language_id => $::form->{language_id}, - formname => 'letter', - format => 'pdf', - )), + template => $template_file, variables => $::form, return => 'file_name', + variable_content_types => { + body => 'html', + }, ); + my $pdf_file_name; eval { $pdf_file_name = SL::Helper::CreatePDF->create_pdf(%create_params); @@ -237,6 +252,7 @@ sub action_print_letter { my $file = IO::File->new($pdf_file_name, 'r') || croak("Cannot open file '$pdf_file_name'"); my $size = -s $pdf_file_name; my $content_type = 'application/pdf'; + $::form->{letternumber} = $self->letter->letternumber; my $attachment_name = $::form->generate_attachment_filename; $attachment_name =~ s:.*//::g; @@ -293,9 +309,9 @@ sub action_delete_drafts { sub _display { my ($self, %params) = @_; - my $letter = $self->letter; + $::request->{layout}->use_javascript("${_}.js") for qw(ckeditor/ckeditor ckeditor/adapters/jquery); - require 'bin/mozilla/io.pl'; + my $letter = $self->letter; $params{title} ||= t8('Edit Letter'); @@ -313,7 +329,12 @@ sub _display { PCF => [ map { key => $_, value => t8(ucfirst $_) }, PAGE_CREATED_FOR_VALUES() ], letter => $letter, employees => $self->all_employees, - print_options => print_options(inline => 1), + print_options => SL::Helper::PrintOptions->get_print_options ( + options => { no_postscript => 1, + no_opendocument => 1, + no_html => 1, + no_queue => 1 }), + ); } @@ -343,7 +364,7 @@ sub prepare_report { obj_link => sub { $self->url_for(action => 'edit', 'letter.id' => $_[0]->id, callback => $self->models->get_callback) } }, letternumber => { text => t8('Letternumber'), sub => sub { $_[0]->letternumber }, obj_link => sub { $self->url_for(action => 'edit', 'letter.id' => $_[0]->id, callback => $self->models->get_callback) } }, - vc_id => { text => t8('Customer'), sub => sub { $_[0]->customer->displayable_name } }, + vc_id => { text => t8('Customer'), sub => sub { SL::DB::Manager::Customer->find_by_or_create(id => $_[0]->vc_id)->displayable_name } }, contact => { text => t8('Contact'), sub => sub { $_[0]->contact ? $_[0]->contact->full_name : '' } }, ); @@ -531,13 +552,7 @@ sub init_models { SL::Controller::Helper::GetModels->new( controller => $self, model => 'Letter', - sorted => { - _default => { - by => 'letternumber', - dir => 1, - }, - %sort_columns, - }, + sorted => \%sort_columns, with_objects => [ 'contact', 'salesman', 'employee' ], ); }