]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/File.pm
restart apache2 in postinst
[mfinanz.git] / SL / Controller / File.pm
index 77e1d9bee2757d30b7207b7dcf921275ea264741..3f5925a916b209c20ba94bad7a1fe70ebd52861e 100644 (file)
@@ -55,27 +55,34 @@ __PACKAGE__->run_before('check_object_params', only => [ qw(list ajax_delete aja
 # model:  base name of the rose model
 # right:  access right used for import
 my %file_types = (
-  'sales_quotation'         => { gen => 1, gltype => '',   dir =>'SalesQuotation',       model => 'Order',          right => 'import_ar'  },
-  'sales_order'             => { gen => 5, gltype => '',   dir =>'SalesOrder',           model => 'Order',          right => 'import_ar'  },
-  'sales_delivery_order'    => { gen => 1, gltype => '',   dir =>'SalesDeliveryOrder',   model => 'DeliveryOrder',  right => 'import_ar'  },
-  'invoice'                 => { gen => 1, gltype => 'ar', dir =>'SalesInvoice',         model => 'Invoice',        right => 'import_ar'  },
-  'invoice_for_advance_payment' => { gen => 1, gltype => 'ar', dir =>'SalesInvoice',     model => 'Invoice',        right => 'import_ar'  },
-  'final_invoice'           => { gen => 1, gltype => 'ar', dir =>'SalesInvoice',         model => 'Invoice',        right => 'import_ar'  },
-  'credit_note'             => { gen => 1, gltype => '',   dir =>'CreditNote',           model => 'Invoice',        right => 'import_ar'  },
-  'request_quotation'       => { gen => 7, gltype => '',   dir =>'RequestForQuotation',  model => 'Order',          right => 'import_ap'  },
-  'purchase_order'          => { gen => 7, gltype => '',   dir =>'PurchaseOrder',        model => 'Order',          right => 'import_ap'  },
-  'purchase_delivery_order' => { gen => 7, gltype => '',   dir =>'PurchaseDeliveryOrder',model => 'DeliveryOrder',  right => 'import_ap'  },
-  'purchase_invoice'        => { gen => 6, gltype => 'ap', dir =>'PurchaseInvoice',      model => 'PurchaseInvoice',right => 'import_ap'  },
-  'vendor'                  => { gen => 0, gltype => '',   dir =>'Vendor',               model => 'Vendor',         right => 'xx'         },
-  'customer'                => { gen => 1, gltype => '',   dir =>'Customer',             model => 'Customer',       right => 'xx'         },
-  'project'                 => { gen => 0, gltype => '',   dir =>'Project',              model => 'Project',        right => 'xx'         },
-  'part'                    => { gen => 0, gltype => '',   dir =>'Part',                 model => 'Part',           right => 'xx'         },
-  'gl_transaction'          => { gen => 6, gltype => 'gl', dir =>'GeneralLedger',        model => 'GLTransaction',  right => 'import_ap'  },
-  'draft'                   => { gen => 0, gltype => '',   dir =>'Draft',                model => 'Draft',          right => 'xx'         },
-  'csv_customer'            => { gen => 1, gltype => '',   dir =>'Reports',              model => 'Customer',       right => 'xx'         },
-  'csv_vendor'              => { gen => 1, gltype => '',   dir =>'Reports',              model => 'Vendor',         right => 'xx'         },
-  'shop_image'              => { gen => 0, gltype => '',   dir =>'ShopImages',           model => 'Part',           right => 'xx'         },
-  'letter'                  => { gen => 7, gltype => '',   dir =>'Letter',               model => 'Letter',         right => 'sales_letter_edit | purchase_letter_edit' },
+  'sales_quotation'             => { gen => 7, gltype => '',   dir =>'SalesQuotation',            model => 'Order',          right => 'import_ar'  },
+  'sales_order_intake'          => { gen => 7, gltype => '',   dir =>'SalesOrderIntake',          model => 'Order',          right => 'import_ar'  },
+  'sales_order'                 => { gen => 7, gltype => '',   dir =>'SalesOrder',                model => 'Order',          right => 'import_ar'  },
+  'sales_delivery_order'        => { gen => 7, gltype => '',   dir =>'SalesDeliveryOrder',        model => 'DeliveryOrder',  right => 'import_ar'  },
+  'sales_reclamation'           => { gen => 7, gltype => '',   dir =>'SalesReclamation',          model => 'Reclamation',    right => 'import_ar'  },
+  'invoice'                     => { gen => 7, gltype => 'ar', dir =>'SalesInvoice',              model => 'Invoice',        right => 'import_ar'  },
+  'invoice_for_advance_payment' => { gen => 7, gltype => 'ar', dir =>'SalesInvoice',              model => 'Invoice',        right => 'import_ar'  },
+  'final_invoice'               => { gen => 7, gltype => 'ar', dir =>'SalesInvoice',              model => 'Invoice',        right => 'import_ar'  },
+  'credit_note'                 => { gen => 7, gltype => '',   dir =>'CreditNote',                model => 'Invoice',        right => 'import_ar'  },
+  'request_quotation'           => { gen => 7, gltype => '',   dir =>'RequestForQuotation',       model => 'Order',          right => 'import_ap'  },
+  'purchase_quotation_intake'   => { gen => 7, gltype => '',   dir =>'PurchaseQuotationIntake',   model => 'Order',          right => 'import_ap'  },
+  'purchase_order'              => { gen => 7, gltype => '',   dir =>'PurchaseOrder',             model => 'Order',          right => 'import_ap'  },
+  'purchase_order_confirmation' => { gen => 7, gltype => '',   dir =>'PurchaseOrderConfirmation', model => 'Order',          right => 'import_ap'  },
+  'purchase_delivery_order'     => { gen => 7, gltype => '',   dir =>'PurchaseDeliveryOrder',     model => 'DeliveryOrder',  right => 'import_ap'  },
+  'purchase_reclamation'        => { gen => 7, gltype => '',   dir =>'PurchaseReclamation',       model => 'Reclamation',    right => 'import_ap'  },
+  'purchase_invoice'            => { gen => 7, gltype => 'ap', dir =>'PurchaseInvoice',           model => 'PurchaseInvoice',right => 'import_ap'  },
+  'supplier_delivery_order'     => { gen => 7, gltype => '',   dir =>'SupplierDeliveryOrder',     model => 'DeliveryOrder',  right => 'import_ap'  },
+  'rma_delivery_order'          => { gen => 7, gltype => '',   dir =>'RMADeliveryOrder',          model => 'DeliveryOrder',  right => 'import_ar'  },
+  'vendor'                      => { gen => 0, gltype => '',   dir =>'Vendor',                    model => 'Vendor',         right => 'xx'         },
+  'customer'                    => { gen => 1, gltype => '',   dir =>'Customer',                  model => 'Customer',       right => 'xx'         },
+  'project'                     => { gen => 0, gltype => '',   dir =>'Project',                   model => 'Project',        right => 'xx'         },
+  'part'                        => { gen => 0, gltype => '',   dir =>'Part',                      model => 'Part',           right => 'xx'         },
+  'gl_transaction'              => { gen => 6, gltype => 'gl', dir =>'GeneralLedger',             model => 'GLTransaction',  right => 'import_ap'  },
+  'draft'                       => { gen => 0, gltype => '',   dir =>'Draft',                     model => 'Draft',          right => 'xx'         },
+  'csv_customer'                => { gen => 1, gltype => '',   dir =>'Reports',                   model => 'Customer',       right => 'xx'         },
+  'csv_vendor'                  => { gen => 1, gltype => '',   dir =>'Reports',                   model => 'Vendor',         right => 'xx'         },
+  'shop_image'                  => { gen => 0, gltype => '',   dir =>'ShopImages',                model => 'Part',           right => 'xx'         },
+  'letter'                      => { gen => 7, gltype => '',   dir =>'Letter',                    model => 'Letter',         right => 'sales_letter_edit | purchase_letter_edit' },
 );
 
 #--- 4 locale ---#
@@ -150,8 +157,8 @@ sub action_ajax_unimport {
 
 sub action_ajax_rename {
   my ($self) = @_;
-  my ($id, $version) = split /_/, $::form->{id};
-  my $file = SL::File->get(id => $id);
+  my $guid = $::form->{id};
+  my $file = SL::File->get(guid => $guid);
   if ( ! $file ) {
     $self->js->flash('error', $::locale->text('File not exists !'))->render();
     return;
@@ -272,7 +279,7 @@ sub action_ajax_files_uploaded {
                                       );
 
         if ($existobj) {
-          push @existing, $existobj->id.'_'.$sfile->file_name;
+          push @existing, ($existobj->versions)[0]->file_version->guid.'_'.$sfile->file_name;
         } else {
           my $fileobj = SL::File->save(object_id        => $self->object_id,
                                        object_type      => $self->object_type,
@@ -386,16 +393,10 @@ sub _delete_all {
   my ($self, $do_unimport, $infotext) = @_;
   my $files = '';
   my $ids = $::form->{ids};
-  foreach my $id_version (@{ $::form->{$ids} || [] }) {
-    my ($id, $version) = split /_/, $id_version;
-    my $dbfile = SL::File->get(id => $id);
-    if ( $dbfile ) {
-      if ( $version ) {
-        $dbfile->version($version);
-        $files .= ' ' . $dbfile->file_name if $dbfile->delete_version;
-      } else {
-        $files .= ' ' . $dbfile->file_name if $dbfile->delete;
-      }
+  foreach my $version_guid (@{ $::form->{$ids} || [] }) {
+    my $dbfile = SL::File->get(guid => $version_guid);
+    if ($dbfile) {
+      $files .= ' ' . $dbfile->file_name if $dbfile->delete_file_version;
     }
   }
   $self->js->flash('info', $infotext . $files) if $files;
@@ -404,26 +405,21 @@ sub _delete_all {
 
 sub _do_list {
   my ($self, $json) = @_;
+
   my @files;
+  my @object_types = ($self->object_type);
   if ( $self->file_type eq 'document' ) {
-    my @object_types;
-    push @object_types, $self->object_type;
     push @object_types, qw(dunning1 dunning2 dunning3 dunning_invoice dunning_orig_invoice) if $self->object_type eq 'invoice'; # hardcoded object types?
-    @files = SL::File->get_all_versions(object_id   => $self->object_id,
-                                        object_type => \@object_types,
-                                        file_type   => $self->file_type,
-                                       );
-
-  }
-  elsif ( $self->file_type eq 'attachment' || $self->file_type eq 'image' ) {
-    @files   = SL::File->get_all(object_id   => $self->object_id,
-                                 object_type => $self->object_type,
-                                 file_type   => $self->file_type,
-                                );
   }
+  @files = SL::File->get_all_versions(object_id   => $self->object_id,
+                                      object_type => \@object_types,
+                                      file_type   => $self->file_type,
+                                     );
+
   $self->files(\@files);
 
-  $_->{thumbnail} = _create_thumbnail($_) for @files;
+  $_->{thumbnail}     = _create_thumbnail($_)                     for @files;
+  $_->{version_count} = SL::File->get_version_count(id => $_->id) for @files;
 
   if($self->object_type eq 'shop_image'){
     $self->js
@@ -506,9 +502,9 @@ sub _mk_render {
       $self->js->html('#'.$self->file_type.'_list_'.$self->object_type, $output);
       if ( $self->existing && scalar(@{$self->existing}) > 0) {
         my $first = shift @{$self->existing};
-        my ($first_id, $sfile) = split('_', $first, 2);
-        my $file = SL::File->get(id => $first_id );
-        $self->js->run('kivi.File.askForRename', $first_id, $file->file_type, $file->file_name, $sfile, join (',', @{$self->existing}), $self->is_global);
+        my ($first_guid, $sfile) = split('_', $first, 2);
+        my $file = SL::File->get(guid => $first_guid );
+        $self->js->run('kivi.File.askForRename', $first_guid, $file->file_type, $file->file_name, $sfile, join (',', @{$self->existing}), $self->is_global);
       }
       $self->js->render();
     } else {
@@ -633,7 +629,7 @@ sub _get_sources {
   return @sources;
 }
 
-# ignores all errros
+# ignores all errors
 # todo: cache thumbs?
 sub _create_thumbnail {
   my ($file, $size) = @_;