X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/a06b7defe96cfbdcfd2fb557678e820205639785..2c597c2df21ae8025159665f39845ccfe9b7dabd:/SL/Controller/CsvImport.pm diff --git a/SL/Controller/CsvImport.pm b/SL/Controller/CsvImport.pm index 50b5e4d05..19922109f 100644 --- a/SL/Controller/CsvImport.pm +++ b/SL/Controller/CsvImport.pm @@ -13,9 +13,11 @@ use SL::SessionFile; use SL::Controller::CsvImport::Contact; use SL::Controller::CsvImport::CustomerVendor; use SL::Controller::CsvImport::Part; +use SL::Controller::CsvImport::Inventory; use SL::Controller::CsvImport::Shipto; use SL::Controller::CsvImport::Project; use SL::Controller::CsvImport::Order; +use SL::JSON; use SL::BackgroundJob::CsvImport; use SL::System::TaskServer; @@ -27,7 +29,7 @@ use parent qw(SL::Controller::Base); use Rose::Object::MakeMethods::Generic ( scalar => [ qw(type profile file all_profiles all_charsets sep_char all_sep_chars quote_char all_quote_chars escape_char all_escape_chars all_buchungsgruppen all_units - import_status errors headers raw_data_headers info_headers data num_imported num_importable displayable_columns file) ], + import_status errors headers raw_data_headers info_headers data num_imported num_importable displayable_columns file all_taxzones) ], 'scalar --get_set_init' => [ qw(worker task_server) ], 'array' => [ progress_tracker => { }, @@ -221,7 +223,7 @@ sub check_auth { sub check_type { my ($self) = @_; - die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts customers_vendors addresses contacts projects orders); + die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts inventories customers_vendors addresses contacts projects orders); $self->type($::form->{profile}->{type}); } @@ -263,10 +265,15 @@ sub render_inputs { : $self->type eq 'addresses' ? $::locale->text('CSV import: shipping addresses') : $self->type eq 'contacts' ? $::locale->text('CSV import: contacts') : $self->type eq 'parts' ? $::locale->text('CSV import: parts and services') + : $self->type eq 'inventories' ? $::locale->text('CSV import: inventories') : $self->type eq 'projects' ? $::locale->text('CSV import: projects') : $self->type eq 'orders' ? $::locale->text('CSV import: orders') : die; + if ($self->{type} eq 'customers_vendors' or $self->{type} eq 'orders' ) { + $self->all_taxzones(SL::DB::Manager::TaxZone->get_all_sorted(query => [ obsolete => 0 ])); + }; + if ($self->{type} eq 'parts') { $self->all_buchungsgruppen(SL::DB::Manager::Buchungsgruppe->get_all_sorted); $self->all_units(SL::DB::Manager::Unit->get_all_sorted); @@ -308,11 +315,15 @@ sub test_and_import_deferred { $self->task_server->start; } - flash('info', $::locale->text('Your import is beig processed.')); + flash('info', $::locale->text('Your import is being processed.')); $self->{deferred} = 1; - $self->render_inputs; + if ($::request->type eq 'json') { + $self->render(\ SL::JSON::to_json($self->{background_job}->as_tree), { type => 'json' }) + } else { + $self->render_inputs; + } } sub test_and_import { @@ -363,6 +374,7 @@ sub load_all_profiles { where => [ type => $self->type, login => $::myconfig{login}, + '!name' => '', ], sort_by => 'name')); } @@ -414,17 +426,17 @@ sub char_map { } sub save_report { - my ($self, $report_id) = @_; + my ($self, %params) = @_; if ($self->worker->is_multiplexed) { - return $self->save_report_multi($report_id); + return $self->save_report_multi(%params); } else { - return $self->save_report_single($report_id); + return $self->save_report_single(%params); } } sub save_report_single { - my ($self, $report_id) = @_; + my ($self, %params) = @_; $self->track_progress(phase => 'building report', progress => 0); @@ -432,7 +444,7 @@ sub save_report_single { $clone_profile->save; # weird bug. if this isn't saved before adding it to the report, it will default back to the last profile. my $report = SL::DB::CsvImportReport->new( - session_id => $::auth->create_or_refresh_session, + session_id => $params{session_id}, profile => $clone_profile, type => $self->type, file => '', @@ -494,7 +506,7 @@ sub save_report_single { } sub save_report_multi { - my ($self, $report_id) = @_; + my ($self, %params) = @_; $self->track_progress(phase => 'building report', progress => 0); @@ -502,7 +514,7 @@ sub save_report_multi { $clone_profile->save; # weird bug. if this isn't saved before adding it to the report, it will default back to the last profile. my $report = SL::DB::CsvImportReport->new( - session_id => $::auth->create_or_refresh_session, + session_id => $params{session_id}, profile => $clone_profile, type => $self->type, file => '', @@ -603,6 +615,7 @@ sub init_worker { : $self->{type} eq 'contacts' ? SL::Controller::CsvImport::Contact->new(@args) : $self->{type} eq 'addresses' ? SL::Controller::CsvImport::Shipto->new(@args) : $self->{type} eq 'parts' ? SL::Controller::CsvImport::Part->new(@args) + : $self->{type} eq 'inventories' ? SL::Controller::CsvImport::Inventory->new(@args) : $self->{type} eq 'projects' ? SL::Controller::CsvImport::Project->new(@args) : $self->{type} eq 'orders' ? SL::Controller::CsvImport::Order->new(@args) : die "Program logic error";