Merge branch 'b-3.6.1' into mebil
[kivitendo-erp.git] / SL / File / Backend / Webdav.pm
index 40e1398..bf8f9af 100644 (file)
@@ -5,12 +5,13 @@ use strict;
 use parent qw(SL::File::Backend);
 use SL::DB::File;
 
-#use SL::Webdav;
+use SL::System::Process;
 use File::Copy;
 use File::Slurp;
 use File::Basename;
 use File::Path qw(make_path);
 use File::MimeInfo::Magic;
+use File::stat;
 
 #
 # public methods
@@ -73,9 +74,8 @@ sub get_mtime {
   die "no dbfile" unless $params{dbfile};
   $main::lxdebug->message(LXDebug->DEBUG2(), "version=" .$params{version});
   my ($path, undef, undef) = $self->webdav_path($params{dbfile});
-  die "no file found in backend" if !-f $path;
-  my @st = stat($path);
-  my $dt = DateTime->from_epoch(epoch => $st[9])->clone();
+  die "No file found in Backend: " . $path unless -f $path;
+  my $dt = DateTime->from_epoch(epoch => stat($path)->mtime, time_zone => $::locale->get_local_time_zone()->name)->clone();
   $main::lxdebug->message(LXDebug->DEBUG2(), "dt=" .$dt);
   return $dt;
 }
@@ -84,7 +84,7 @@ sub get_filepath {
   my ($self, %params) = @_;
   die "no dbfile" unless $params{dbfile};
   my ($path, undef, undef) = $self->webdav_path($params{dbfile});
-  die "no file" if !-f $path;
+  die "No file found in Backend: " . $path unless -f $path;
   return $path;
 }
 
@@ -105,8 +105,7 @@ sub sync_from_backend {
 }
 
 sub enabled {
-  return 0 unless $::instance_conf->get_doc_webdav;
-  return 1;
+  return $::instance_conf->get_doc_webdav;
 }
 
 #
@@ -114,47 +113,51 @@ sub enabled {
 #
 
 my %type_to_path = (
-  sales_quotation         => 'angebote',
-  sales_order             => 'bestellungen',
-  request_quotation       => 'anfragen',
-  purchase_order          => 'lieferantenbestellungen',
-  sales_delivery_order    => 'verkaufslieferscheine',
-  purchase_delivery_order => 'einkaufslieferscheine',
-  credit_note             => 'gutschriften',
-  invoice                 => 'rechnungen',
-  purchase_invoice        => 'einkaufsrechnungen',
-  part                    => 'waren',
-  service                 => 'dienstleistungen',
-  assembly                => 'erzeugnisse',
-  letter                  => 'briefe',
-  general_ledger          => 'dialogbuchungen',
-  gl_transaction          => 'dialogbuchungen',
-  accounts_payable        => 'kreditorenbuchungen',
-  shop_image              => 'shopbilder',
-  customer                => 'kunden',
-  vendor                  => 'lieferanten',
+  sales_quotation             => 'angebote',
+  sales_order                 => 'bestellungen',
+  request_quotation           => 'anfragen',
+  purchase_order              => 'lieferantenbestellungen',
+  sales_delivery_order        => 'verkaufslieferscheine',
+  purchase_delivery_order     => 'einkaufslieferscheine',
+  credit_note                 => 'gutschriften',
+  invoice                     => 'rechnungen',
+  invoice_for_advance_payment => 'rechnungen',
+  final_invoice               => 'rechnungen',
+  purchase_invoice            => 'einkaufsrechnungen',
+  part                        => 'waren',
+  service                     => 'dienstleistungen',
+  assembly                    => 'erzeugnisse',
+  letter                      => 'briefe',
+  general_ledger              => 'dialogbuchungen',
+  gl_transaction              => 'dialogbuchungen',
+  accounts_payable            => 'kreditorenbuchungen',
+  shop_image                  => 'shopbilder',
+  customer                    => 'kunden',
+  vendor                      => 'lieferanten',
 );
 
 my %type_to_model = (
-  sales_quotation         => 'Order',
-  sales_order             => 'Order',
-  request_quotation       => 'Order',
-  purchase_order          => 'Order',
-  sales_delivery_order    => 'DeliveryOrder',
-  purchase_delivery_order => 'DeliveryOrder',
-  credit_note             => 'Invoice',
-  invoice                 => 'Invoice',
-  purchase_invoice        => 'PurchaseInvoice',
-  part                    => 'Part',
-  service                 => 'Part',
-  assembly                => 'Part',
-  letter                  => 'Letter',
-  general_ledger          => 'GLTransaction',
-  gl_transaction          => 'GLTransaction',
-  accounts_payable        => 'GLTransaction',
-  shop_image              => 'Part',
-  customer                => 'Customer',
-  vendor                  => 'Vendor',
+  sales_quotation             => 'Order',
+  sales_order                 => 'Order',
+  request_quotation           => 'Order',
+  purchase_order              => 'Order',
+  sales_delivery_order        => 'DeliveryOrder',
+  purchase_delivery_order     => 'DeliveryOrder',
+  credit_note                 => 'Invoice',
+  invoice                     => 'Invoice',
+  invoice_for_advance_payment => 'Invoice',
+  final_invoice               => 'Invoice',
+  purchase_invoice            => 'PurchaseInvoice',
+  part                        => 'Part',
+  service                     => 'Part',
+  assembly                    => 'Part',
+  letter                      => 'Letter',
+  general_ledger              => 'GLTransaction',
+  gl_transaction              => 'GLTransaction',
+  accounts_payable            => 'GLTransaction',
+  shop_image                  => 'Part',
+  customer                    => 'Customer',
+  vendor                      => 'Vendor',
 );
 
 my %model_to_number = (
@@ -206,17 +209,7 @@ sub webdav_path {
   return (File::Spec->catfile($path, $fname), $path, $fname);
 }
 
-sub get_rootdir {
-  my ($self) = @_;
-
-  #TODO immer noch das alte Problem:
-  #je nachdem von woher der Aufruf kommt ist man in ./users oder .
-  my $rootdir  = POSIX::getcwd();
-  my $basename = basename($rootdir);
-  my $dirname  = dirname($rootdir);
-  $rootdir = $dirname if $basename eq 'users';
-  return $rootdir;
-}
+sub get_rootdir { SL::System::Process::exe_dir() }
 
 sub _get_number_from_model {
   my ($self, $dbfile) = @_;
@@ -346,5 +339,3 @@ The synchronization must be tested and a periodical task is needed to synchroniz
 Martin Helmling E<lt>martin.helmling@opendynamic.deE<gt>
 
 =cut
-
-