X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FCsvImportReport.pm;h=5249410c8c41d5df4d592c6d5ef88a03ac6b6cb0;hb=9dfd320ff258071e3ad78dd6cf2d76e215efd4f7;hp=b3cdf3bf348f6fdd57696df0e2eda65e1c7afd40;hpb=638e0b031a49d9864395e8600077306b91a45252;p=kivitendo-erp.git diff --git a/SL/DB/CsvImportReport.pm b/SL/DB/CsvImportReport.pm index b3cdf3bf3..5249410c8 100644 --- a/SL/DB/CsvImportReport.pm +++ b/SL/DB/CsvImportReport.pm @@ -4,6 +4,7 @@ package SL::DB::CsvImportReport; use strict; +use SL::DB; use SL::DBUtils; use SL::DB::MetaSetup::CsvImportReport; @@ -56,20 +57,28 @@ sub folded_status { sub destroy { my ($self) = @_; - my $dbh = $self->db->dbh; - - $dbh->begin_work; - - do_query($::form, $dbh, 'DELETE FROM csv_import_report_status WHERE csv_import_report_id = ?', $self->id); - do_query($::form, $dbh, 'DELETE FROM csv_import_report_rows WHERE csv_import_report_id = ?', $self->id); - do_query($::form, $dbh, 'DELETE FROM csv_import_reports WHERE id = ?', $self->id); - - if ($self->profile_id) { - do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id); - do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id); - } - - $dbh->commit; + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; + + do_query($::form, $dbh, 'DELETE FROM csv_import_report_status WHERE csv_import_report_id = ?', $self->id); + do_query($::form, $dbh, 'DELETE FROM csv_import_report_rows WHERE csv_import_report_id = ?', $self->id); + do_query($::form, $dbh, 'DELETE FROM csv_import_reports WHERE id = ?', $self->id); + + if ($self->profile_id) { + my ($is_profile_used_elsewhere) = selectfirst_array_query($::form, $dbh, <profile_id); + SELECT id + FROM csv_import_reports + WHERE profile_id = ? + LIMIT 1 +SQL + + if (!$is_profile_used_elsewhere) { + do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id); + do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id); + } + } + 1; + }) or do { die SL::DB->client->error }; } 1;