From 7acf94746ccb4f2e9511f0b5a8873012e9d2f266 Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Thu, 4 Jul 2024 10:21:03 +0000 Subject: [PATCH] Bug 37115: Batch delete linked serials Test plan: - Add a new subscription to a serial record (with the option 'create an item record' selected) - Receive several issues and create the linked items - Return to the bibliographic record - Select several items - Click to 'Delete selected items' - Tick the box 'delete serial issues linked to items' and confirm - The items should be deleted correctly - Back to subscription : the issues linked to items should no longer exist Signed-off-by: Boubacar OUATTARA Signed-off-by: Nathalie --- Koha/BackgroundJob/BatchDeleteItem.pm | 22 +++++++++++++------ .../prog/en/modules/tools/batchMod-del.tt | 13 +++++++++-- tools/batchMod.pl | 6 +++-- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/Koha/BackgroundJob/BatchDeleteItem.pm b/Koha/BackgroundJob/BatchDeleteItem.pm index 6533d9dc1ae..c0040e2b8f7 100644 --- a/Koha/BackgroundJob/BatchDeleteItem.pm +++ b/Koha/BackgroundJob/BatchDeleteItem.pm @@ -81,8 +81,9 @@ sub process { $self->start; - my @record_ids = @{ $args->{record_ids} }; - my $delete_biblios = $args->{delete_biblios}; + my @record_ids = @{ $args->{record_ids} }; + my $delete_biblios = $args->{delete_biblios}; + my $delete_serial_issues = $args->{delete_serial_issues}; my $report = { total_records => scalar @record_ids, @@ -106,7 +107,12 @@ sub process { my $item = Koha::Items->find($record_id) || next; - my $return = $item->safe_delete( { skip_record_index => 1, skip_holds_queue => 1 } ); + my $return = $item->safe_delete( + { + skip_record_index => 1, skip_holds_queue => 1, + delete_serial_issues => $delete_serial_issues + } + ); unless ($return) { # FIXME Do we need to rollback the whole transaction if a deletion failed? @@ -221,15 +227,17 @@ sub enqueue { # TODO Raise exception instead return unless exists $args->{record_ids}; - my @record_ids = @{ $args->{record_ids} }; - my $delete_biblios = $args->{delete_biblios} || 0; + my @record_ids = @{ $args->{record_ids} }; + my $delete_biblios = $args->{delete_biblios} || 0; + my $delete_serial_issues = $args->{delete_serial_issues} || 0; $self->SUPER::enqueue( { job_size => scalar @record_ids, job_args => { - record_ids => \@record_ids, - delete_biblios => $delete_biblios, + record_ids => \@record_ids, + delete_biblios => $delete_biblios, + delete_serial_issues => $delete_serial_issues, }, job_queue => 'long_tasks', } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt index 4e8e7edcbee..e27dbef6900 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt @@ -175,8 +175,17 @@

This will delete [% IF ( too_many_items_display ) %]all the[% ELSE %]the selected[% END %] items.

[% IF ( CAN_user_editcatalogue_edit_catalogue ) %] - - +
+
+ + + +
+
+ + +
+
[% END %]
diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 92f19d29298..b03c3489596 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -48,6 +48,7 @@ my $biblionumber = $input->param('biblionumber'); my $op = $input->param('op'); my $del = $input->param('del'); my $del_records = $input->param('del_records'); +my $del_serial_issues = $input->param('del_serial_issues'); my $src = $input->param('src'); my $use_default_values = $input->param('use_default_values'); my $exclude_from_local_holds_priority = $input->param('exclude_from_local_holds_priority'); @@ -93,8 +94,9 @@ if ( $op eq "cud-action" ) { if ($del) { try { my $params = { - record_ids => \@itemnumbers, - delete_biblios => $del_records, + record_ids => \@itemnumbers, + delete_biblios => $del_records, + delete_serial_issues => $del_serial_issues, }; my $job_id = Koha::BackgroundJob::BatchDeleteItem->new->enqueue($params); $nextop = 'enqueued'; -- 2.48.1