From 03a717905cc933e5b315caa2cec0d84fa520715a 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 Signed-off-by: Michal Denar --- .../prog/en/modules/serials/serials-collection.tt | 52 +++++++++++++++++++++- serials/serials-collection.pl | 29 ++++++++++++ 2 files changed, 79 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 1af50fe9de..37151610db 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 @@ -31,6 +31,31 @@ [% 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 ) %] @@ -120,6 +145,7 @@
[% END %] [% END %] +

[% END %] @@ -163,8 +189,12 @@ [% IF ( serial.subscriptionexpired ) %] [% ELSE %] - [% IF ( serial.checked ) %] - + [% IF ( delete ) %] + [% IF serialsid.grep("${serial.serialid}").size %] + + [% ELSE %] + + [% END %] [% ELSE %] [% END %] @@ -281,6 +311,19 @@ diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index e8735b319d..7685a9146b 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 ); @@ -107,6 +108,29 @@ if($op eq 'gennext' && @subscriptionid){ exit; } +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'){ + 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' => $biblionumber, 'itemnumber' => $itemnumber}); + } + } + } + for my $serialid (@serialsid){ + ModSerialStatus($serialid,"","","","",6); + } + print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); +} + my $subscriptioncount; my ($location, $callnumber); if (@subscriptionid){ @@ -182,6 +206,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.11.0