CSV Import Defaults in die Worker ausgelagert
authorG. Richardson <information@kivitendo-premium.de>
Wed, 6 May 2015 15:53:48 +0000 (17:53 +0200)
committerG. Richardson <information@kivitendo-premium.de>
Thu, 7 May 2015 07:37:47 +0000 (09:37 +0200)
Neben den Standard-Defaults, die für alle gelten (charset, numberformat,
...)

SL/Controller/CsvImport.pm
SL/Controller/CsvImport/BankTransaction.pm
SL/Controller/CsvImport/Contact.pm
SL/Controller/CsvImport/CustomerVendor.pm
SL/Controller/CsvImport/Inventory.pm
SL/Controller/CsvImport/Order.pm
SL/Controller/CsvImport/Part.pm
SL/Controller/CsvImport/Project.pm
SL/Controller/CsvImport/Shipto.pm
SL/DB/CsvImportProfile.pm

index 2bc2955..e58d025 100644 (file)
@@ -385,6 +385,7 @@ sub load_default_profile {
   $profile ||= SL::DB::CsvImportProfile->new(type => $self->{type}, login => $::myconfig{login});
 
   $self->profile($profile);
+  $self->worker->set_profile_defaults;
   $self->profile->set_defaults;
 }
 
index 76e9020..4bd9b96 100644 (file)
@@ -15,6 +15,15 @@ use Rose::Object::MakeMethods::Generic
  'scalar --get_set_init' => [ qw(bank_accounts_by) ],
 );
 
+sub set_profile_defaults {
+  my ($self) = @_;
+
+  $self->controller->profile->_set_defaults(
+                       charset       => 'UTF8',  # override charset from defaults
+                       update_policy => 'skip',
+                      );
+};
+
 sub init_class {
   my ($self) = @_;
   $self->class('SL::DB::BankTransaction');
index e653d7c..adaa85c 100644 (file)
@@ -13,6 +13,9 @@ use Rose::Object::MakeMethods::Generic
  scalar => [ qw(table) ],
 );
 
+sub set_profile_defaults {
+};
+
 sub init_class {
   my ($self) = @_;
   $self->class('SL::DB::Contact');
index 0a5c121..b70c0a7 100644 (file)
@@ -17,6 +17,11 @@ use Rose::Object::MakeMethods::Generic
  'scalar --get_set_init' => [ qw(table languages_by businesses_by) ],
 );
 
+sub set_profile_defaults {
+  my ($self) = @_;
+  $self->controller->profile->_set_defaults(table => 'customer');
+};
+
 sub init_table {
   my ($self) = @_;
   $self->table($self->controller->profile->get('table') eq 'customer' ? 'customer' : 'vendor');
index c0dcfb5..c1406d0 100644 (file)
@@ -28,6 +28,9 @@ sub init_class {
   $self->class('SL::DB::Inventory');
 }
 
+sub set_profile_defaults {
+};
+
 sub init_profile {
   my ($self) = @_;
 
index 246438c..f8dbbb1 100644 (file)
@@ -34,6 +34,16 @@ sub init_class {
   $self->class(['SL::DB::Order', 'SL::DB::OrderItem']);
 }
 
+sub set_profile_defaults {
+  my ($self) = @_;
+
+  $self->controller->profile->_set_defaults(
+                       order_column    => $::locale->text('Order'),
+                       item_column     => $::locale->text('OrderItem'),
+                       max_amount_diff => 0.02,
+                      );
+};
+
 
 sub init_settings {
   my ($self) = @_;
index 33301d1..be989ee 100644 (file)
@@ -27,6 +27,24 @@ use Rose::Object::MakeMethods::Generic
                                  translation_columns all_pricegroups) ],
 );
 
+sub set_profile_defaults {
+  my ($self) = @_;
+
+  my $bugru = SL::DB::Manager::Buchungsgruppe->find_by(description => { like => 'Standard%19%' });
+
+  $self->controller->profile->_set_defaults(
+                       sellprice_places          => 2,
+                       sellprice_adjustment      => 0,
+                       sellprice_adjustment_type => 'percent',
+                       article_number_policy     => 'update_prices',
+                       shoparticle_if_missing    => '0',
+                       parts_type                => 'part',
+                       default_buchungsgruppe    => ($bugru ? $bugru->id : undef),
+                       apply_buchungsgruppe      => 'all',
+                      );
+};
+
+
 sub init_class {
   my ($self) = @_;
   $self->class('SL::DB::Part');
index d03de46..4b846dc 100644 (file)
@@ -18,6 +18,9 @@ sub init_class {
   $self->class('SL::DB::Project');
 }
 
+sub set_profile_defaults {
+};
+
 sub init_all_cvar_configs {
   my ($self) = @_;
 
index 1d2fdd7..e32da46 100644 (file)
@@ -11,6 +11,9 @@ use Rose::Object::MakeMethods::Generic
  scalar => [ qw(table) ],
 );
 
+sub set_profile_defaults {
+};
+
 sub init_class {
   my ($self) = @_;
   $self->class('SL::DB::Shipto');
index 9980ad5..8797a7a 100644 (file)
@@ -34,43 +34,6 @@ sub new_with_default {
 sub set_defaults {
   my ($self) = @_;
 
-
-  if ($self->type eq 'parts') {
-    my $bugru = SL::DB::Manager::Buchungsgruppe->find_by(description => { like => 'Standard%19%' });
-
-    $self->_set_defaults(sellprice_places          => 2,
-                         sellprice_adjustment      => 0,
-                         sellprice_adjustment_type => 'percent',
-                         article_number_policy     => 'update_prices',
-                         shoparticle_if_missing    => '0',
-                         parts_type                => 'part',
-                         default_buchungsgruppe    => ($bugru ? $bugru->id : undef),
-                         apply_buchungsgruppe      => 'all',
-                        );
-  } elsif ($self->type eq 'orders') {
-    $self->_set_defaults(order_column    => $::locale->text('Order'),
-                         item_column     => $::locale->text('OrderItem'),
-                         max_amount_diff => 0.02,
-                        );
-  } elsif ($self->type eq 'mt940') {
-    $self->_set_defaults(charset       => 'UTF8',
-                         sep_char      => ';',
-                         numberformat  => '1000.00',
-                         update_policy => 'skip',
-                        );
-  } elsif ($self->type eq 'bank_transactions') {
-    $self->_set_defaults(charset       => 'UTF8',
-                         update_policy => 'skip',
-                        );
-  } else {
-    $self->_set_defaults(table => 'customer');
-  }
-
-  # TODO: move the defaults into their own controller
-  # defaults can only be set once, so use these values as default if they
-  # haven't already been set above for one of the special import types
-  # If the values have been set above they won't be overwritten here:
-
   $self->_set_defaults(sep_char     => ',',
                        quote_char   => '"',
                        escape_char  => '"',