1 package SL::DB::CsvImportProfile;
5 use List::Util qw(first);
7 use SL::DB::MetaSetup::CsvImportProfile;
9 __PACKAGE__->meta->add_relationship(
11 type => 'one to many',
12 class => 'SL::DB::CsvImportProfileSetting',
13 column_map => { id => 'csv_import_profile_id' },
17 __PACKAGE__->meta->initialize;
19 __PACKAGE__->meta->make_manager_class;
21 __PACKAGE__->before_save('_before_save_unset_default_on_others');
27 sub new_with_default {
28 my ($class, $type) = @_;
30 return $class->new(type => $type)->set_defaults;
36 $self->_set_defaults(sep_char => ',',
40 numberformat => $::myconfig{numberformat},
43 if ($self->type eq 'parts') {
44 my $bugru = SL::DB::Manager::Buchungsgruppe->find_by(name => { like => 'Standard%19%' });
46 $self->_set_defaults(sellprice_places => 2,
47 sellprice_adjustment => 0,
48 sellprice_adjustment_type => 'percent',
49 article_number_policy => 'update_price',
50 price_group_sep_char => '!',
51 shoparticle_if_missing => 0,
53 default_buchungsgruppe => ($bugru ? $bugru->name : undef),
56 $self->_set_defaults(table => 'customer');
63 my ($self, %params) = @_;
65 while (my ($key, $value) = each %params) {
66 my $setting = $self->_get_setting($key);
69 $setting = SL::DB::CsvImportProfileSetting->new(key => $key);
70 $self->settings(@{ $self->settings || [] }, $setting);
73 $setting->value($value);
80 my ($self, $key, $default) = @_;
82 my $setting = $self->_get_setting($key);
83 return $setting ? $setting->value : $default;
87 my ($self, %params) = @_;
89 while (my ($key, $value) = each %params) {
90 $self->settings(@{ $self->settings || [] }, { key => $key, value => $value }) if !$self->_get_setting($key);
100 sub _before_save_unset_default_on_others {
103 if ($self->is_default) {
104 SL::DB::Manager::CsvImportProfile->update_all(set => { is_default => 0 },
105 where => [ type => $self->type,
106 '!id' => $self->id ]);
117 my ($self, $key) = @_;
118 return first { $_->key eq $key } @{ $self->settings || [] };