X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FBackgroundJob%2FCsvImport.pm;h=00f76d537824cfecb1daa5b01310b499f8059427;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=98aed9c37172b86d9e45b778a1f02434e6dc03e0;hpb=b2930e37cd4bfd276be6c785e1cd7fff0f503aef;p=kivitendo-erp.git diff --git a/SL/BackgroundJob/CsvImport.pm b/SL/BackgroundJob/CsvImport.pm index 98aed9c37..00f76d537 100644 --- a/SL/BackgroundJob/CsvImport.pm +++ b/SL/BackgroundJob/CsvImport.pm @@ -4,10 +4,9 @@ use strict; use parent qw(SL::BackgroundJob::Base); -use YAML (); -use SL::Controller::CsvImport; +use SL::JSON; +use SL::YAML; use SL::DB::CsvImportProfile; -use SL::SessionFile::Random; sub create_job { my ($self_or_class, %params) = @_; @@ -15,13 +14,8 @@ sub create_job { my $package = ref($self_or_class) || $self_or_class; $package =~ s/SL::BackgroundJob:://; - my $profile = delete $params{profile} || SL::DB::CsvImportProfile->new; - my $new_profile = $profile->clone_and_reset_deep; - $new_profile->save; - my %data = ( %params, - profile_id => $new_profile->id, session_id => $::auth->get_session_id, ); @@ -29,7 +23,7 @@ sub create_job { type => 'once', active => 1, package_name => $package, - data => YAML::Dump(\%data), + data => SL::YAML::Dump(\%data), ); return $job; @@ -39,7 +33,7 @@ sub profile { my ($self) = @_; if (!$self->{profile}) { - my $data = YAML::Load($self->{db_obj}->data); + my $data = SL::YAML::Load($self->{db_obj}->data); $self->{profile} = SL::DB::Manager::CsvImportProfile->find_by(id => $data->{profile_id}); } @@ -51,18 +45,19 @@ sub run { $self->{db_obj} = shift; $self->do_import; - - $self->cleanup; } sub do_import { my ($self) = @_; + require SL::Controller::CsvImport; my $c = SL::Controller::CsvImport->new; my $job = $self->{db_obj}; $c->profile($self->profile); + $c->mappings(SL::JSON::from_json($self->profile->get('json_mappings'))) if $self->profile->get('json_mappings'); $c->type($job->data_as_hash->{type}); + $c->{employee_id} = $job->data_as_hash->{employee_id}; my $test = $job->data_as_hash->{test}; @@ -76,27 +71,32 @@ sub do_import { plan => { 'parsing csv' => 1, 'building data' => 2, - ( 'saving data' => 3, )x!!$test, + ( 'saving data' => 3, )x!$test, 'building report' => ($test ? 3 : 4), }, num_phases => ($test ? 3 : 4), ); $c->add_progress_tracker($self); + my $session_id = $job->data_as_hash->{session_id}; - $c->test_and_import(test => 1, session_id => $job->data_as_hash->{session_id}); - + $c->test_and_import(test => $test, session_id => $session_id); + my $result; if ($c->errors) { $job->set_data( errors => $c->errors, )->save; + $result = $::locale->text('Import finished with errors.'); } else { - my $report_id = $c->save_report; + my $report_id = $c->save_report(session_id => $session_id, test => $test); $job->set_data(report_id => $report_id)->save; $c->track_progress(finished => 1); + $result = $::locale->text('Import finished without errors.'); } + + return $result; } sub track_progress { @@ -110,10 +110,6 @@ sub track_progress { $self->{db_obj}->save; } -sub cleanup { - -} - 1; __END__