From 2739d8ddeca071eb0c40eab716a84776e5e7c987 Mon Sep 17 00:00:00 2001 From: Pierre-Marc Thibault Date: Wed, 10 Oct 2018 11:25:59 -0400 Subject: [PATCH] Bug 17674 - Allow UI to delete serials in batch This new feature allows for batch deletion of serials through the UI. The current usage is a one-by-one long game. Testing - Have at least three serials, with items - check the box to select two of them - Press the Remove selected issues button - Decide to delete their items as well or not - Validate. Sponsored by : CCSR --- .../prog/en/modules/serials/serials-collection.tt | 51 +++++++++++++++++++++- serials/serials-collection.pl | 29 ++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt index 8bee8c4..77ef341 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt @@ -32,6 +32,30 @@ [% IF ( callnumber ) %]callnumber: [% callnumber | html %][% END %] [% END %] +[% IF ( delete ) %] +
+

You are about to delete [% serialnumber %] serial(s). Do you want to continue?

+
+ [% IF countitems > 0 %] +
Number of items available: [% countitems %]
+

+ +

+ [% END %] + + + [% FOREACH serialid IN serialsid %] + + [% END %] + +
+
+ + +
+
+[% END %] + [% IF ( subscriptions ) %] [% IF ( subscriptions.size == 1 ) %] @@ -121,6 +145,7 @@
[% END %] [% END %] +

[% END %] @@ -164,8 +189,12 @@ [% IF ( serial.subscriptionexpired ) %] [% ELSE %] - [% IF ( serial.checked ) %] - + [% IF ( delete ) %] + [% IF serialsid.grep("${serial.serialid}").size %] + + [% ELSE %] + + [% END %] [% ELSE %] [% END %] @@ -280,6 +309,19 @@ diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index a4fd91d..93582ca 100755 --- a/serials/serials-collection.pl +++ b/serials/serials-collection.pl @@ -27,6 +27,7 @@ use C4::Serials; use C4::Letters; use C4::Output; use C4::Context; +use Koha::Serial::Items; use Koha::DateUtils qw( dt_from_string ); @@ -106,6 +107,29 @@ if($op eq 'gennext' && @subscriptionid){ print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); } +my $countitems = 0; +my @serialsid = $query->multi_param('serialid'); +my $subscriptionid = $subscriptionid[0]; + +if($op eq 'delete_confirm'){ + foreach my $serialid (@serialsid){ + $countitems += Koha::Serial::Items->search({ serialid => $serialid})->count(); + } +}elsif($op eq 'delete_confirmed'){ + for my $serialid (@serialsid){ + ModSerialStatus($serialid,"","","","",6); + } + if($query->param('delitems') eq "Yes"){ + foreach my $serialid (@serialsid){ + my @itemnumbers = Koha::Serial::Items->search({serialid => $serialid})->get_column('itemnumber'); + foreach my $itemnumber (@itemnumbers){ + C4::Items::DelItem({'biblionumber' => $serialid, 'itemnumber' => $itemnumber}); + } + } + } + print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); +} + my $subscriptioncount; my ($location, $callnumber); if (@subscriptionid){ @@ -177,6 +201,11 @@ $template->param( callnumber => $callnumber, uc(C4::Context->preference("marcflavour")) => 1, serialsadditems => $subscriptiondescs->[0]{'serialsadditems'}, + delete => ($op eq 'delete_confirm'), + subscriptionid => $subscriptionid, + countitems => $countitems, + serialnumber => scalar @serialsid, + serialsid => \@serialsid, ); output_html_with_http_headers $query, $cookie, $template->output; -- 2.7.4