From a1da9904c93a3ab3eb4c796e43f60d14020d51a8 Mon Sep 17 00:00:00 2001 From: Blou Date: Wed, 23 Nov 2016 12:22:11 -0500 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 --- C4/Serials.pm | 18 +++++++ .../prog/en/modules/serials/serials-collection.tt | 57 ++++++++++++++++++++-- serials/serials-collection.pl | 35 ++++++++++++- 3 files changed, 105 insertions(+), 5 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 543b1dc..6be379e 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -87,6 +87,7 @@ BEGIN { HasItems &GetSubscriptionsFromBorrower &subscriptionCurrentlyOnOrder + &GetSerialItemsInformations ); } @@ -2711,7 +2712,24 @@ sub _can_do_on_subscription { } return 0; } +=head1 GetSerialItemsInformations +=cut +sub GetSerialItemsInformations{ +my (@serialid)=@_; +my $i=0; +my @serialitemsinformation; +my $dbh = C4::Context->dbh; +foreach my $sid(@serialid){ + my $sth = $dbh->prepare("select count(i.itemnumber) as countitems,s.itemnumber as itemnumber from items i natural join serialitems s where s.serialid=?"); + $sth->execute($sid); + my $line = $sth->fetchrow_hashref; + if($line->{'countitems'}){ + push @serialitemsinformation,$line; + } +} + return @serialitemsinformation; +} =head2 findSerialsByStatus @serials = findSerialsByStatus($status, $subscriptionid); 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 293c5bf..12ac1f7 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 @@ -15,6 +15,28 @@ function generateReceive(subscriptionid) { document.location = 'serials-collection.pl?op=gennext&subscriptionid='+subscriptionid+'&nbissues='+nbissues; } } + +function deleteIssues(subscriptionid){ + var serialnumber=0; + var serials=""; + var serialids = document.edition.serialid; + for(i=0;iHomeSerials › Serial collection information for [% bibliotitle %] +[% IF ( delete ) %] +
+
+

Are you sure delete [% serialnumber %] selected serials

+
+
Delete associated items Yes + No
+
Number of items available : [% countitems %]
+ + + + +
+
+ + +
+
+
+ [% END %]
@@ -186,6 +228,7 @@ $(document).ready(function() { [% IF ( subscriptions.size == 1 and !serialsadditems ) %] [% END %] [% END %] +

[% END %] @@ -227,12 +270,20 @@ $(document).ready(function() { disabled [% ELSE %] [% IF ( serial.subscriptionexpired ) %] - + [% ELSE %] [% IF ( serial.checked ) %] - + [% IF ( delete ) %] + + [% ELSE %] + + [% END %] [% ELSE %] - + [% IF ( delete ) %] + + [% ELSE %] + + [% END %] [% END %] [% END %] [% END %] diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index 47d07eb..9f5bca9 100755 --- a/serials/serials-collection.pl +++ b/serials/serials-collection.pl @@ -25,6 +25,7 @@ use CGI qw ( -utf8 ); use C4::Auth; use C4::Koha; use C4::Serials; +use C4::Items; use C4::Letters; use C4::Output; use C4::Context; @@ -48,11 +49,19 @@ my ($template, $loggedinuser, $cookie) my $biblionumber = $query->param('biblionumber'); my @subscriptionid = $query->multi_param('subscriptionid'); +my $serialsid=$query->param('serialsid'); +my $serialnumber=$query->param('serialnumber'); +my $confdelete=$query->param('confdelete'); +my $delitems=$query->param('delitems'); @subscriptionid= uniq @subscriptionid; @subscriptionid= sort @subscriptionid; my $subscriptiondescs; my $subscriptions; - +my $delete; +my $countitems=0; +my @ids=split("!",$serialsid); +my @serialitemsinformation=GetSerialItemsInformations(@ids); +my $subscriptionid = $subscriptionid[0]; if($op eq 'gennext' && @subscriptionid){ my $subscriptionid = $subscriptionid[0]; my $sth = $dbh->prepare(" @@ -102,6 +111,23 @@ if($op eq 'gennext' && @subscriptionid){ print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); } +if($op eq 'delete'){ + $delete=1; + foreach my $line (@serialitemsinformation){ + $countitems+=$line->{'countitems'}; + } +} +if($confdelete){ + for my $id(@ids){ + ModSerialStatus($id,"","","","",6); + } + if($delitems eq "Yes"){ + foreach my $line (@serialitemsinformation){ + DelItem($line); + } + } +print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); +} my $subscriptioncount; my ($location, $callnumber); if (@subscriptionid){ @@ -166,6 +192,11 @@ $template->param( callnumber => $callnumber, uc(C4::Context->preference("marcflavour")) => 1, serialsadditems => $subscriptiondescs->[0]{'serialsadditems'}, - ); + subscriptionid =>$subscriptionid, + delete =>$delete, + serialsid =>$serialsid, + serialnumber =>$serialnumber, + countitems =>$countitems, + ); output_html_with_http_headers $query, $cookie, $template->output; -- 2.1.0