X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FCsvImportProfile.pm;h=21dd4842d825a464296dbca931b41d8793619ea3;hb=13fc241edb1b1a658eb818a106ec06e1e9dac005;hp=85033e1818758f50449689153b188913b0225321;hpb=c2cf302a52645c06687d49496ea4a42471ea095c;p=kivitendo-erp.git diff --git a/SL/DB/CsvImportProfile.pm b/SL/DB/CsvImportProfile.pm index 85033e181..21dd4842d 100644 --- a/SL/DB/CsvImportProfile.pm +++ b/SL/DB/CsvImportProfile.pm @@ -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 => { @@ -24,6 +25,42 @@ __PACKAGE__->before_save('_before_save_unset_default_on_others'); # public functions # +sub new_with_default { + my ($class, $type) = @_; + + return $class->new(type => $type)->set_defaults; +} + +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%' }); + + $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', + ); + } else { + $self->_set_defaults(table => 'customer'); + } + + return $self; +} + sub set { my ($self, %params) = @_; @@ -32,7 +69,7 @@ sub set { if (!$setting) { $setting = SL::DB::CsvImportProfileSetting->new(key => $key); - $self->add_settings($setting); + $self->settings(@{ $self->settings || [] }, $setting); } $setting->value($value); @@ -48,6 +85,34 @@ sub get { return $setting ? $setting->value : $default; } +sub _set_defaults { + my ($self, %params) = @_; + + while (my ($key, $value) = each %params) { + $self->settings(@{ $self->settings || [] }, { key => $key, value => $value }) if !$self->_get_setting($key); + } + + 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 # @@ -70,7 +135,7 @@ sub _before_save_unset_default_on_others { sub _get_setting { my ($self, $key) = @_; - return first { $_->key eq $key } @{ $self->settings }; + return first { $_->key eq $key } @{ $self->settings || [] }; } 1;