Auftrags-Controller: Webdav
[kivitendo-erp.git] / SL / Controller / Order.pm
index ed84673..9310f91 100644 (file)
@@ -9,6 +9,7 @@ use SL::Locale::String;
 use SL::SessionFile::Random;
 use SL::PriceSource;
 use SL::Form;
+use SL::Webdav;
 
 use SL::DB::Order;
 use SL::DB::Customer;
@@ -125,9 +126,32 @@ sub action_create_pdf {
   my $key = join('_', Time::HiRes::gettimeofday(), int rand 1000000000000);
   $::auth->set_session_value("Order::create_pdf-${key}" => $sfile->file_name);
 
-  $::form->{formname}  = $self->type;
-  $::form->{language} = 'de';
-  my $pdf_filename =  $::form->get_formname_translation . '_' . $self->order->ordnumber . '.pdf';
+  my $form = Form->new;
+  $form->{ordnumber} = $self->order->ordnumber;
+  $form->{formname}  = $self->type;
+  $form->{type}      = $self->type;
+  $form->{language}  = 'de';
+  $form->{format}    = 'pdf';
+
+  my $pdf_filename = $form->generate_attachment_filename();
+
+  # copy file to webdav folder
+  if ($self->order->ordnumber && $::instance_conf->get_webdav_documents) {
+    my $webdav = SL::Webdav->new(
+      type     => $self->type,
+      number   => $self->order->ordnumber,
+    );
+    my $webdav_file = SL::Webdav::File->new(
+      webdav   => $webdav,
+      filename => $pdf_filename,
+    );
+    eval {
+      $webdav_file->store(data => \$pdf);
+      1;
+    } or do {
+      $self->js->flash('error', t8('Storing PDF to webdav folder failed: #1', $@));
+    }
+  }
 
   $self->js
     ->run('download_pdf', $pdf_filename, $key)
@@ -642,6 +666,7 @@ sub _pre_render {
   my ($self) = @_;
 
   $self->{all_taxzones}        = SL::DB::Manager::TaxZone->get_all_sorted();
+  $self->{all_departments}     = SL::DB::Manager::Department->get_all_sorted();
   $self->{all_employees}       = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->employee_id,
                                                                                        deleted => 0 ] ],
                                                                     sort_by => 'name');
@@ -663,6 +688,19 @@ sub _pre_render {
 
   }
 
+  if ($self->order->ordnumber && $::instance_conf->get_webdav) {
+    my $webdav = SL::Webdav->new(
+      type     => $self->type,
+      number   => $self->order->ordnumber,
+    );
+    my $webdav_path = $webdav->webdav_path;
+    my @all_objects = $webdav->get_all_objects;
+    @{ $self->{template_args}->{WEBDAV} } = map { { name => $_->filename,
+                                                    type => t8('File'),
+                                                    link => File::Spec->catdir($webdav_path, $_->filename),
+                                                } } @all_objects;
+  }
+
   $::request->{layout}->use_javascript("${_}.js")  for qw(ckeditor/ckeditor ckeditor/adapters/jquery);
 }