X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FLetter.pm;h=9ca6bc76c91508c7df104aa10471a18547901602;hb=0bf92081282bc1cad1d7cec16e55f13ca584ff11;hp=8e588d9f858fc21bffc33814a2fd0916b18de98e;hpb=c0158b6b111fa98fbde66a300237133c999bfb9f;p=kivitendo-erp.git diff --git a/SL/Controller/Letter.pm b/SL/Controller/Letter.pm index 8e588d9f8..9ca6bc76c 100644 --- a/SL/Controller/Letter.pm +++ b/SL/Controller/Letter.pm @@ -3,9 +3,12 @@ package SL::Controller::Letter; use strict; use parent qw(SL::Controller::Base); +use Carp; +use File::Basename; 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; @@ -174,12 +177,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) { @@ -217,6 +222,9 @@ sub action_print_letter { template => $template_file, variables => $::form, return => 'file_name', + variable_content_types => { + body => 'html', + }, ); my $pdf_file_name; @@ -240,11 +248,20 @@ sub action_print_letter { return !$err; } + my $webdav_copy_args = Form->new(''); + %{ $webdav_copy_args } = ( + %{ $::form }, + tmpdir => dirname($pdf_file_name), + tmpfile => basename($pdf_file_name), + cwd => POSIX::getcwd(), + ); + if (!$::form->{printer_id} || $::form->{media} eq 'screen') { 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; @@ -255,7 +272,7 @@ sub action_print_letter { $::locale->with_raw_io(\*STDOUT, sub { print while <$file> }); $file->close; - Common::copy_file_to_webdav_folder($::form) if $::instance_conf->get_webdav_documents; + Common::copy_file_to_webdav_folder($webdav_copy_args) if $::instance_conf->get_webdav_documents; unlink $pdf_file_name; return 1; } @@ -267,7 +284,7 @@ sub action_print_letter { binmode $out; print $out scalar(read_file($pdf_file_name)); close $out; - Common::copy_file_to_webdav_folder($::form) if $::instance_conf->get_webdav_documents; + Common::copy_file_to_webdav_folder($webdav_copy_args) if $::instance_conf->get_webdav_documents; flash_later('info', t8('The documents have been sent to the printer \'#1\'.', $printer->printer_description)); $self->redirect_to(action => 'edit', id => $letter->{id}, 'printer_id' => $::form->{printer_id}); @@ -301,6 +318,8 @@ sub action_delete_drafts { sub _display { my ($self, %params) = @_; + $::request->{layout}->use_javascript("${_}.js") for qw(ckeditor/ckeditor ckeditor/adapters/jquery); + my $letter = $self->letter; $params{title} ||= t8('Edit Letter'); @@ -354,7 +373,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 : '' } }, ); @@ -542,13 +561,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' ], ); }