X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=SL%2FController%2FCsvImport%2FBase.pm;h=4667677c6687e49de84acfb4fe0e3b755b072488;hb=73a58f3dceeb378343ceb151942828eea686b75a;hp=db6dc4d87caae24b1631b2d1e1e816483ad140b2;hpb=d70e6870a8cbadc86b0584a780e6f84c95dcb21d;p=kivitendo-erp.git diff --git a/SL/Controller/CsvImport/Base.pm b/SL/Controller/CsvImport/Base.pm index db6dc4d87..4667677c6 100644 --- a/SL/Controller/CsvImport/Base.pm +++ b/SL/Controller/CsvImport/Base.pm @@ -2,7 +2,7 @@ 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; @@ -11,6 +11,7 @@ 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); @@ -30,8 +31,7 @@ sub run { my $profile = $self->profile; $self->csv(SL::Helper::Csv->new(file => $self->file->file_name, encoding => $self->controller->profile->get('charset'), - class => $self->class, - profile => $profile, + profile => [{ profile => $profile, class => $self->class }], ignore_unknown_columns => 1, strict_profile => 1, case_insensitive_header => 1, @@ -307,6 +307,8 @@ sub init_manager_class { $self->manager_class("SL::DB::Manager::" . $1); } +sub is_multiplexed { 0 } + sub check_objects { } @@ -412,9 +414,13 @@ sub save_objects { my $object = $entry->{object_to_save} || $entry->{object}; - if ( !$object->save(cascade => !!$self->save_with_cascade()) ) { + my $ret; + if (!eval { $ret = $object->save(cascade => !!$self->save_with_cascade()); 1 }) { + push @{ $entry->{errors} }, $::locale->text('Error when saving: #1', $@); + } elsif ( !$ret ) { 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 { @@ -457,4 +463,27 @@ sub clean_fields { return @cleaned_fields; } +sub _save_history { + my ($self, $object) = @_; + + if (any { $_ eq $self->controller->{type} } qw(parts customers_vendors orders)) { + 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) + : $self->controller->{type} eq 'orders' ? 'ordnumber_' . $object->ordnumber + : ''; + + my $what_done = $self->controller->{type} eq 'orders' ? 'sales_order' + : ''; + + SL::DB::History->new( + trans_id => $object->id, + snumbers => $snumbers, + employee_id => $self->controller->{employee_id}, + addition => 'SAVED', + what_done => $what_done, + )->save(); + } +} + 1;