From: Moritz Bunkus Date: Tue, 24 Sep 2019 09:39:00 +0000 (+0200) Subject: CSV-Import-Bericht: beim Löschen nur verwaiste Profile löschen X-Git-Tag: release-3.5.6.1~483 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=5d1790289c565ace01143d524538bd505859a57c;p=kivitendo-erp.git CSV-Import-Bericht: beim Löschen nur verwaiste Profile löschen Unter gewissen Umständen kann es passieren, dass es mehrere `csv_import_reports` mit derselben `profile_id` gibt. In so einem Fall darf nur dann versucht werden, die Einträge aus `csv_import_profiles` zu löschen, wenn der letzte `csv_import_reports`-Eintrag gelöscht wird, der auf auf dieses Profil verlinkt. --- diff --git a/SL/DB/CsvImportReport.pm b/SL/DB/CsvImportReport.pm index b9c34eb34..5249410c8 100644 --- a/SL/DB/CsvImportReport.pm +++ b/SL/DB/CsvImportReport.pm @@ -65,8 +65,17 @@ sub destroy { 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); + 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 };