X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCsvImport%2FBase.pm;h=b3b9368c79105156fe4eb839ffb9a176cae08707;hb=6bfa402637ee758834d72fd74b75f872566e8873;hp=eb46b26d54f7c29933d6c402652388a3e8931e26;hpb=4249eeff3d68e15d74cbba40529a73f6b06e971e;p=kivitendo-erp.git diff --git a/SL/Controller/CsvImport/Base.pm b/SL/Controller/CsvImport/Base.pm index eb46b26d5..b3b9368c7 100644 --- a/SL/Controller/CsvImport/Base.pm +++ b/SL/Controller/CsvImport/Base.pm @@ -2,21 +2,23 @@ package SL::Controller::CsvImport::Base; use strict; -use List::MoreUtils qw(pairwise); +use List::MoreUtils qw(pairwise any); use SL::Helper::Csv; +use SL::DB::Currency; use SL::DB::Customer; use SL::DB::Language; use SL::DB::PaymentTerm; use SL::DB::Vendor; use SL::DB::Contact; +use SL::DB::History; use parent qw(Rose::Object); use Rose::Object::MakeMethods::Generic ( scalar => [ qw(controller file csv test_run save_with_cascade) ], - 'scalar --get_set_init' => [ qw(profile displayable_columns existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by all_vc vc_by) ], + 'scalar --get_set_init' => [ qw(profile displayable_columns existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by all_currencies default_currency_id all_vc vc_by) ], ); sub run { @@ -139,6 +141,18 @@ sub init_all_languages { return SL::DB::Manager::Language->get_all; } +sub init_all_currencies { + my ($self) = @_; + + return SL::DB::Manager::Currency->get_all; +} + +sub init_default_currency_id { + my ($self) = @_; + + return SL::DB::Default->get->currency_id; +} + sub init_payment_terms_by { my ($self) = @_; @@ -153,6 +167,10 @@ sub init_all_vc { vendors => SL::DB::Manager::Vendor->get_all }; } +sub force_allow_columns { + return (); +} + sub init_vc_by { my ($self) = @_; @@ -222,6 +240,8 @@ sub init_profile { eval "require " . $self->class; my %unwanted = map { ( $_ => 1 ) } (qw(itime mtime), map { $_->name } @{ $self->class->meta->primary_key_columns }); + delete $unwanted{$_} for ($self->force_allow_columns); + my %profile; for my $col ($self->class->meta->columns) { next if $unwanted{$col}; @@ -396,6 +416,7 @@ sub save_objects { if ( !$object->save(cascade => !!$self->save_with_cascade()) ) { push @{ $entry->{errors} }, $::locale->text('Error when saving: #1', $entry->{object}->db->error); } else { + $self->_save_history($object); $self->controller->num_imported($self->controller->num_imported + 1); } } continue { @@ -428,7 +449,6 @@ sub clean_fields { my @cleaned_fields; foreach my $field (grep { $object->can($_) } @fields) { my $value = $object->$field; - $::lxdebug->message(0, "field $field value $value ill $illegal_chars"); next unless defined($value) && ($value =~ s/$illegal_chars/ /g); @@ -439,4 +459,22 @@ sub clean_fields { return @cleaned_fields; } +sub _save_history { + my ($self, $object) = @_; + + if (any { $_ eq $self->controller->{type} } qw(parts customers_vendors)) { + my $snumbers = $self->controller->{type} eq 'parts' ? 'partnumber_' . $object->partnumber + : $self->controller->{type} eq 'customers_vendors' ? + ($self->table eq 'customer' ? 'customernumber_' . $object->customernumber : 'vendornumber_' . $object->vendornumber) + : ''; + + SL::DB::History->new( + trans_id => $object->id, + snumbers => $snumbers, + employee_id => $self->controller->{employee_id}, + addition => 'SAVED', + )->save(); + } +} + 1;