From de08faefc07edb5b1dfb940e7a4f59dff0b66a33 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 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: Sonia BOUIS Signed-off-by: Séverine QUEUNE --- C4/Serials.pm | 18 +++++ .../prog/en/modules/serials/serials-collection.tt | 79 +++++++++++++++++++++- serials/serials-collection.pl | 35 +++++++++- 3 files changed, 127 insertions(+), 5 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index ac21dad..63d406f 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -87,6 +87,7 @@ BEGIN { HasItems &GetSubscriptionsFromBorrower &subscriptionCurrentlyOnOrder + &GetSerialItemsInformations ); } @@ -2723,7 +2724,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 f59fd35..e0bec41 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 @@ -14,6 +14,26 @@ +[% IF ( delete ) %] +
+
+

Are you sure delete [% serialnumber %] selected serials

+
+
Delete associated items Yes + No
+
Number of items available : [% countitems %]
+ + + + +
+
+ + +
+
+
+ [% END %]
@@ -116,6 +136,7 @@ [% IF ( subscriptions.size == 1 and !serialsadditems ) %] [% END %] [% END %] +

[% END %] @@ -157,12 +178,20 @@ disabled [% ELSE %] [% IF ( serial.subscriptionexpired ) %] - + [% ELSE %] [% IF ( serial.checked ) %] - + [% IF ( delete ) %] + + [% ELSE %] + + [% END %] [% ELSE %] - + [% IF ( delete ) %] + + [% ELSE %] + + [% END %] [% END %] [% END %] [% END %] @@ -278,6 +307,50 @@ 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;iparam('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(" @@ -101,6 +110,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){ @@ -172,6 +198,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.4