GetModels: get_callback_params
[kivitendo-erp.git] / SL / DB / CsvImportProfile.pm
index e0dfe16..9980ad5 100644 (file)
@@ -4,7 +4,8 @@ use strict;
 
 use List::Util qw(first);
 
-use SL::DB::MetaSetup::CsvImportProfile;
+require SL::DB::MetaSetup::CsvImportProfile;
+use Rose::DB::Object::Helpers qw(clone_and_reset);
 
 __PACKAGE__->meta->add_relationship(
   settings => {
@@ -33,13 +34,6 @@ sub new_with_default {
 sub set_defaults {
   my ($self) = @_;
 
-  $self->_set_defaults(sep_char     => ',',
-                       quote_char   => '"',
-                       escape_char  => '"',
-                       charset      => 'CP850',
-                       numberformat => $::myconfig{numberformat},
-                       duplicates   => 'no_check',
-                      );
 
   if ($self->type eq 'parts') {
     my $bugru = SL::DB::Manager::Buchungsgruppe->find_by(description => { like => 'Standard%19%' });
@@ -48,16 +42,43 @@ sub set_defaults {
                          sellprice_adjustment      => 0,
                          sellprice_adjustment_type => 'percent',
                          article_number_policy     => 'update_prices',
-                         part_group_sep_char       => '!',
                          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  => '"',
+                       charset      => 'CP850',
+                       numberformat => $::myconfig{numberformat},
+                       duplicates   => 'no_check',
+                      );
+
   return $self;
 }
 
@@ -95,6 +116,24 @@ sub _set_defaults {
   return $self;
 }
 
+sub clone_and_reset_deep {
+  my ($self) = @_;
+
+  my $clone = $self->clone_and_reset;
+  $clone->settings(map { $_->clone_and_reset } $self->settings);
+  $clone->name('');
+
+  return $clone;
+}
+
+sub flatten {
+  my ($self) = @_;
+
+  return map {
+    $_->key => $_->value
+  } $self->settings;
+}
+
 #
 # hooks
 #