Bug 26992: Fix serial issue and related items deletion on serial collection page
authorFrédéric Demians <f.demians@tamil.fr>
Tue, 10 Nov 2020 16:00:09 +0000 (17:00 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 20 Nov 2020 07:16:02 +0000 (08:16 +0100)
serial-collection.pl uses C4::Items::DelItemCheck() function which is obsolete.

Test plan:

1. Create a subscription with items created when receiving.
2. Receive several issues, and create corresponding items.
3. On Serial collection page (serial-collection.pl), select several issues.
4. Click on button Delete selected issues
5. A confirmation page is displayed. Enable "Delete associated items?".
   Then click on "Yes, delete" button.

   You get this error: Undefined subroutine &C4::Items::DelItemCheck

6. Apply the patch an repeat steps 3-5.
   Check that issues and related items are deleted.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
serials/serials-collection.pl

index a1979ed..14c5a44 100755 (executable)
@@ -119,12 +119,16 @@ if($op eq 'delete_confirm'){
     }
 }elsif($op eq 'delete_confirmed'){
     if($query->param('delitems') eq "Yes"){
+        my @itemnumbers;
         foreach my $serialid (@serialsid){
-            my @itemnumbers = Koha::Serial::Items->search({serialid => $serialid})->get_column('itemnumber');
-            foreach my $itemnumber (@itemnumbers){
-                my $delcheck = C4::Items::DelItemCheck($biblionumber, $itemnumber);
-                $template->param(error_delitem => 1) if $delcheck != 1;
-            }
+            my @ids = Koha::Serial::Items->search({serialid => $serialid})->get_column('itemnumber');
+            push(@itemnumbers, @ids);
+        }
+        my $items = Koha::Items->search({ itemnumber => \@itemnumbers });
+        while ( my $item = $items->next ) {
+            my $error = $item->safe_delete;
+            $template->param(error_delitem => 1)
+                if $error eq '1';
         }
     }
     for my $serialid (@serialsid){