From 6587e61fc9d8e14d7fd966ac4b4bbb7e77f65ef9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart <jonathan.druart@biblibre.com> Date: Tue, 18 Sep 2012 14:03:06 +0200 Subject: [PATCH] Bug 8782: Close a subscription If a subscription is no longer enough published (or we are not waiting for a new periodical) we are allowed to close it. If a subscription is closed, we are not able to receive or generate a new serial. On the serial module, we can now - close a subscriptionn - reopen a closed subscription On serial search 2 tabs is displayed (opened and closed subscriptions). This patch adds: - a new field subscription.closed in DB - a new status for serials (8 = stopped) Test plan: - search subscriptions - close a subscription and check that you cannot receive or generate a new serial - launch another search and check that the closed serial is into the "closed" tab. - You are allowed to reopen a subscription on the subscription detail page and on the subscription result page. A javascript alert ask you if are certain to do this operation. - Check the serial status "stopped" everywhere the status is displayed (catalogue/detail.pl, serials/claims.pl, serials/serial-issues-full.pl, serials/serials-collection.pl, serials/serials-edit.pl, serials/serials-recieve.pl, serials/subscription-detail.pl and opac-full-serial-issues.pl) - The report statistics does not include the closed subscriptions if you don't check the "Include expired subscriptions" checkbox. --- C4/Serials.pm | 63 ++++- installer/data/mysql/kohastructure.sql | 1 + installer/data/mysql/updatedatabase.pl | 11 + .../prog/en/includes/serials-menu.inc | 2 + .../prog/en/includes/serials-toolbar.inc | 77 ++++-- .../prog/en/modules/catalogue/detail.tt | 24 +- .../prog/en/modules/serials/claims.tt | 2 + .../prog/en/modules/serials/serial-issues-full.tt | 14 +- .../prog/en/modules/serials/serials-collection.tt | 44 +++- .../prog/en/modules/serials/serials-edit.tt | 114 ++++----- .../prog/en/modules/serials/serials-recieve.tt | 3 + .../prog/en/modules/serials/serials-search.tt | 249 +++++++++++++------- .../prog/en/modules/serials/subscription-detail.tt | 42 ++-- .../prog/en/modules/opac-full-serial-issues.tt | 15 +- misc/cronjobs/serialsUpdate.pl | 1 + reports/serials_stats.pl | 13 +- serials/checkexpiration.pl | 1 + serials/serials-collection.pl | 3 + serials/serials-search.pl | 25 +- serials/subscription-detail.pl | 7 + 20 files changed, 484 insertions(+), 227 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index cedbcff..76aae10 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -93,7 +93,13 @@ sub GetSuppliersWithLateIssues { FROM subscription LEFT JOIN serial ON serial.subscriptionid=subscription.subscriptionid LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id - WHERE id > 0 AND ((planneddate < now() AND serial.status=1) OR serial.STATUS = 3 OR serial.STATUS = 4) ORDER BY name|; + WHERE id > 0 + AND ( + (planneddate < now() AND serial.status=1) + OR serial.STATUS = 3 OR serial.STATUS = 4 + ) + AND subscription.closed = 0 + ORDER BY name|; return $dbh->selectall_arrayref($query, { Slice => {} }); } @@ -122,6 +128,7 @@ sub GetLateIssues { LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id WHERE ((planneddate < now() AND serial.STATUS =1) OR serial.STATUS = 3) AND subscription.aqbooksellerid=? + AND subscription.closed = 0 ORDER BY title |; $sth = $dbh->prepare($query); @@ -134,6 +141,7 @@ sub GetLateIssues { LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id WHERE ((planneddate < now() AND serial.STATUS =1) OR serial.STATUS = 3) + AND subscription.closed = 0 ORDER BY title |; $sth = $dbh->prepare($query); @@ -685,7 +693,10 @@ sub SearchSubscriptions { push @where_strs, "subscription.branchcode = ?"; push @where_args, "$args->{branch}"; } - + if( defined $args->{closed} ){ + push @where_strs, "subscription.closed = ?"; + push @where_args, "$args->{closed}"; + } if(@where_strs){ $query .= " WHERE " . join(" AND ", @where_strs); } @@ -2465,6 +2476,54 @@ sub is_barcode_in_use { return @{$occurences}; } +=head2 CloseSubscription +Close a subscription given a subscriptionid +=cut +sub CloseSubscription { + my ( $subscriptionid ) = @_; + return unless $subscriptionid; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( qq{ + UPDATE subscription + SET closed = 1 + WHERE subscriptionid = ? + } ); + $sth->execute( $subscriptionid ); + + # Set status = missing when status = stopped + $sth = $dbh->prepare( qq{ + UPDATE serial + SET status = 8 + WHERE subscriptionid = ? + AND status = 1 + } ); + $sth->execute( $subscriptionid ); +} + +=head2 ReopenSubscription +Reopen a subscription given a subscriptionid +=cut +sub ReopenSubscription { + my ( $subscriptionid ) = @_; + return unless $subscriptionid; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( qq{ + UPDATE subscription + SET closed = 0 + WHERE subscriptionid = ? + } ); + $sth->execute( $subscriptionid ); + + # Set status = expected when status = stopped + $sth = $dbh->prepare( qq{ + UPDATE serial + SET status = 1 + WHERE subscriptionid = ? + AND status = 8 + } ); + $sth->execute( $subscriptionid ); +} + 1; __END__ diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 29ee782..3c89c42 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1918,6 +1918,7 @@ CREATE TABLE `subscription` ( `opacdisplaycount` VARCHAR(10) NULL, `graceperiod` int(11) NOT NULL default '0', `enddate` date default NULL, + `closed ` INT(1) NOT NULL DEFAULT 0, PRIMARY KEY (`subscriptionid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index e67bf3e..e7bf63a 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6011,6 +6011,17 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { SetVersion ($DBversion); } +$DBversion = "3.09.00.XXX"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + if ( not column_exists( 'closed', 'subscription' ) ) { + $dbh->do(qq{ + ALTER TABLE subscription ADD COLUMN closed INT(1) NOT NULL DEFAULT 0 AFTER enddate; + }); + } + print "Upgrade to $DBversion done (Add field subscription.closed)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc index 0feafda..8083192 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc @@ -1,6 +1,7 @@ [% IF ( subscriptionid ) %] <ul> <li><a href="serials-collection.pl?subscriptionid=[% subscriptionid %]">Serial collection</a></li> + [% UNLESS closed %] [% IF ( routing && CAN_user_serials_routing ) %] [% IF ( hasRouting ) %] <li><a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscriptionid %]">Edit routing list</a></li> @@ -8,6 +9,7 @@ <li><a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscriptionid %]&op=new">Create routing list</a></li> [% END %] [% END %] + [% END %] </ul> [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc index 00f76bc..0e7497d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc @@ -1,6 +1,18 @@ <div id="toolbar"><script type="text/javascript"> //<![CDATA[ + function confirm_close() { + var is_confirmed = confirm(_("Are you sure you want to close this subscription?")); + if (is_confirmed) { + window.location="subscription-detail.pl?subscriptionid=[% subscriptionid %]&op=close"; + } + } + function confirm_reopen() { + var is_confirmed = confirm(_("Are you sure you want to reopen this subscription?")); + if (is_confirmed) { + window.location="subscription-detail.pl?subscriptionid=[% subscriptionid %]&op=reopen"; + } + } // prepare DOM for YUI Toolbar $(document).ready(function() { @@ -50,6 +62,8 @@ onclick: {fn:function(){popup([% subscriptionid %])}} [% END %] new YAHOO.widget.Button("renew"); new YAHOO.widget.Button("receive"); + new YAHOO.widget.Button("close"); + new YAHOO.widget.Button("reopen"); [% END %] } @@ -57,38 +71,49 @@ onclick: {fn:function(){popup([% subscriptionid %])}} </script> <ul class="toolbar"> [% IF ( CAN_user_serials_create_subscription ) %] - [% IF ( biblionumber_for_new_subscription ) %] - <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber_for_new_subscription %]">New subscription</a></li> - [% ELSE %] - <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl">New subscription</a></li> - [% END %] + [% IF ( biblionumber_for_new_subscription ) %] + <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber_for_new_subscription %]">New subscription</a></li> + [% ELSE %] + <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl">New subscription</a></li> + [% END %] [% END %] [% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %] - [% IF ( subscriptionid ) %] + [% IF ( subscriptionid ) %] - [% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %] - [% UNLESS ( cannotedit ) %] - <li id="editmenuc"><a id="edit" href="/cgi-bin/koha/serials/subscription-add.pl?op=modify&subscriptionid=[% subscriptionid %]">Edit</a></li> - [% END %] - [% END %] + [% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %] + [% UNLESS ( cannotedit ) %] + <li id="editmenuc"><a id="edit" href="/cgi-bin/koha/serials/subscription-add.pl?op=modify&subscriptionid=[% subscriptionid %]">Edit</a></li> + [% END %] + [% END %] - [% IF ( CAN_user_serials_create_subscription ) %] - <li><a id="duplicate" href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&subscriptionid=[% subscriptionid %]">Duplicate </a></li> - [% END %] + [% IF ( CAN_user_serials_create_subscription ) %] + <li><a id="duplicate" href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&subscriptionid=[% subscriptionid %]">Duplicate </a></li> + [% END %] - [% UNLESS ( cannotedit ) %] - [% IF ( CAN_user_serials_renew_subscription ) %] - <li id="renewc"><a id="renew" href="#" onclick="popup([% subscriptionid %])">Renew </a></li> - [% END %] - [% IF ( CAN_user_serials_receive_serials ) %] - <li><a id="receive" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscriptionid %]&serstatus=1,3">Receive</a></li> - [% END %] - [% IF ( CAN_user_serials_delete_subscription ) %] - <li><a id="delete" href="javascript:confirm_deletion()">Delete</a></li> - [% END %] - [% END %] - [% END %] + [% UNLESS ( cannotedit ) %] + [% UNLESS closed %] + [% IF ( CAN_user_serials_renew_subscription ) %] + <li id="renewc"><a id="renew" href="#" onclick="popup([% subscriptionid %])">Renew </a></li> + [% END %] + [% END %] + [% IF ( CAN_user_serials_receive_serials ) %] + [% UNLESS closed %] + <li><a id="receive" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscriptionid %]&serstatus=1,3">Receive</a></li> + [% END %] + [% END %] + [% IF CAN_user_serials_edit_subscription %] + [% IF closed %] + <li><a id="reopen" href="javascript:confirm_reopen();">Reopen</a></li> + [% ELSE %] + <li><a id="close" href="javascript:confirm_close();">Close</a></li> + [% END %] + [% END %] + [% IF ( CAN_user_serials_delete_subscription ) %] + <li><a id="delete" href="javascript:confirm_deletion()">Delete</a></li> + [% END %] + [% END %] + [% END %] [% END %] </ul> </div> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index ef2b5b9..f6a2ea9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -486,20 +486,16 @@ function verify_images() { <tr> <td>[% latestserial.serialseq %]</td> <td>[% latestserial.planneddate %]</td> - <td>[% IF ( latestserial.status1 ) %]Expected - [% ELSE %] - [% IF ( latestserial.status2 ) %]Arrived - [% ELSE %] - [% IF ( latestserial.status3 ) %]Late - [% ELSE %] - [% IF ( latestserial.status4 ) %]Missing - [% ELSE %] - [% IF ( latestserial.status5 ) %]Not issued - [% END %] - [% END %] - [% END %] - [% END %] - [% END %]</td> + <td> + [% IF ( latestserial.status1 ) %]Expected[% END %] + [% IF ( latestserial.status2 ) %]Arrived[% END %] + [% IF ( latestserial.status3 ) %]Late[% END %] + [% IF ( latestserial.status4 ) %]Missing[% END %] + [% IF ( latestserial.status5 ) %]Not issued[% END %] + [% IF ( latestserial.status6 ) %]Delete[% END %] + [% IF ( latestserial.status7 ) %]Claimed[% END %] + [% IF ( latestserial.status8 ) %]Stopped[% END %] + </td> <td>[% latestserial.notes %]</td> </tr> [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt index 5d9f7a9..c1f3aa1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt @@ -208,6 +208,7 @@ <option>Late</option> <option>Missing</option> <option>Claimed</option> + <option>Stopped</option> </select> </li> @@ -284,6 +285,7 @@ [% IF ( missingissue.status3 ) %]Late[% END %] [% IF ( missingissue.status4 ) %]Missing[% END %] [% IF ( missingissue.status7 ) %]Claimed[% END %] + [% IF ( missingissue.status8 ) %]Stopped[% END %] </td> <td class="planneddate"> [% missingissue.planneddate %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serial-issues-full.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serial-issues-full.tt index ae998cc..dbdfda9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serial-issues-full.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serial-issues-full.tt @@ -68,12 +68,14 @@ function active(numlayer) [% serial.serialseq %] </td> <td> - [% IF ( serial.status1 ) %]Arrived[% END %] - [% IF ( serial.status2 ) %]Expected[% END %] - [% IF ( serial.status3 ) %]Late[% END %] - [% IF ( serial.status4 ) %]Missing[% END %] - [% IF ( serial.status5 ) %]Not available[% END %] - [% IF ( serial.status7 ) %]Claimed[% END %] + [% IF ( serial.status1 ) %]Expected[% END %] + [% IF ( serial.status2 ) %]Arrived[% END %] + [% IF ( serial.status3 ) %]Late[% END %] + [% IF ( serial.status4 ) %]Missing[% END %] + [% IF ( serial.status5 ) %]Not issued[% END %] + [% IF ( serial.status6 ) %]Delete[% END %] + [% IF ( serial.status7 ) %]Claimed[% END %] + [% IF ( serial.status8 ) %]Stopped[% END %] </td> </tr> [% END %] 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 3d2e690..a6f5e53 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 @@ -151,22 +151,33 @@ $(document).ready(function() { [% END %]</td> <td> [% subscription.branchcode %]</td> <td> [% subscription.callnumber %]</td> - <td> [% subscription.notes %] [% IF ( subscription.subscriptionexpired ) %]<br /><span class="problem"> Subscription expired</span> - [% END %] + <td> [% subscription.notes %] + [% UNLESS subscription.closed %] + [% IF ( subscription.subscriptionexpired ) %] + <br /><span class="problem"> Subscription expired</span> + [% END %] + [% ELSE %] + <br /> Subscription closed + [% END %] </td> [% IF ( routing && CAN_user_serials_routing ) %] <td> - <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit routing list</a> + [% UNLESS subscription.closed %] + <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit routing list</a> + [% END %] </td> [% END %] - [% IF ( subscription.abouttoexpire ) %]<td class="problem"> <a href="/cgi-bin/koha/serials/subscription-renew.pl?subscriptionid=[% subscription.subscriptionid %]" onclick="popup([% subscription.subscriptionid %]); return false;">Renew</a></td> - [% ELSE %] - [% IF ( subscription.subscriptionexpired ) %]<td class="problem"> <a href="/cgi-bin/koha/serials/subscription-renew.pl?subscriptionid=[% subscription.subscriptionid %]" onclick="popup([% subscription.subscriptionid %]); return false;">Renew</a></td> + [% UNLESS subscription.closed %] + [% IF ( subscription.abouttoexpire ) %]<td class="problem"> <a href="/cgi-bin/koha/serials/subscription-renew.pl?subscriptionid=[% subscription.subscriptionid %]" onclick="popup([% subscription.subscriptionid %]); return false;">Renew</a></td> + [% ELSE %] + [% IF ( subscription.subscriptionexpired ) %]<td class="problem"> <a href="/cgi-bin/koha/serials/subscription-renew.pl?subscriptionid=[% subscription.subscriptionid %]" onclick="popup([% subscription.subscriptionid %]); return false;">Renew</a></td> + [% ELSE %] + <td> </td> + [% END %] + [% END %] [% ELSE %] - <td> </td> - [% END %] + <td> </td> [% END %] - </tr> [% END %] [% IF ( subscr ) %] @@ -194,8 +205,10 @@ $(document).ready(function() { [% IF ( CAN_user_serials_receive_serials ) %] <p> <input type="submit" value="Edit serials" /> - <input type="button" value="Generate Next" onclick="javascript:generateNext([% subscriptionidlist %])" /> - [% IF ( subscriptions.size == 1 and !serialsadditems ) %] <input type="button" value="Multi receiving" onclick="javascript:generateReceive([% subscriptionidlist %])" />[% END %] + [% UNLESS subscription.closed %] + <input type="button" value="Generate Next" onclick="javascript:generateNext([% subscriptionidlist %])" /> + [% IF ( subscriptions.size == 1 and !serialsadditems ) %] <input type="button" value="Multi receiving" onclick="javascript:generateReceive([% subscriptionidlist %])" />[% END %] + [% END %] </p> [% END %] @@ -234,7 +247,14 @@ $(document).ready(function() { [% serial.serialseq %] </td> <td> - [% IF ( serial.status1 ) %]Expected[% END %][% IF ( serial.status2 ) %]Arrived[% END %][% IF ( serial.status3 ) %]Late[% END %][% IF ( serial.status4 ) %]Missing[% END %][% IF ( serial.status5 ) %]Not Available[% END %][% IF ( serial.status7 ) %]Claimed[% END %] + [% IF ( latestserial.status1 ) %]Expected[% END %] + [% IF ( latestserial.status2 ) %]Arrived[% END %] + [% IF ( latestserial.status3 ) %]Late[% END %] + [% IF ( latestserial.status4 ) %]Missing[% END %] + [% IF ( latestserial.status5 ) %]Not issued[% END %] + [% IF ( latestserial.status6 ) %]Delete[% END %] + [% IF ( latestserial.status7 ) %]Claimed[% END %] + [% IF ( latestserial.status8 ) %]Stopped[% END %] </td> <td> [% serial.notes %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt index a6fd962..75f32ea 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt @@ -239,39 +239,42 @@ $(document).ready(function() { <select name="status" size="1" id="status[% serialslis.serialid %]" onchange="if (this.value==2 || this.value==7){changeDate(this, '[% serialslis.arriveddate %]')} else {changeDate(this, '[% serialslis.planneddate %]')}" > [% END %] [% END %] - [% IF ( serialslis.status1 ) %] - <option value="1" selected="selected">Expected</option> - [% END %] - [% IF ( serialslis.status2 ) %] - <option value="2" selected="selected">Arrived</option> - [% ELSE %] - <option value="2">Arrived</option> - [% END %] - [% IF ( serialslis.status3 ) %] - <option value="3" selected="selected">Late</option> - [% ELSE %] - <option value="3">Late</option> - [% END %] - [% IF ( serialslis.status4 ) %] - <option value="4" selected="selected">Missing</option> - [% ELSE %] - <option value="4">Missing</option> - [% END %] - [% IF ( serialslis.status7 ) %] - <option value="7" selected="selected">Claimed</option> - [% ELSE %] - <option value="7">Claimed</option> - [% END %] - [% IF ( serialslis.status5 ) %] - <option value="5" selected="selected">Not available</option> - [% ELSE %] - <option value="5">Not available</option> - [% END %] - [% IF ( serialslis.status6 ) %] - <option value="6" selected="selected">Delete</option> - [% ELSE %] - <option value="6">Delete</option> - [% END %] + [% IF ( serialslis.status1 ) %] + <option value="1" selected="selected">Expected</option> + [% END %] + [% IF ( serialslis.status2 ) %] + <option value="2" selected="selected">Arrived</option> + [% ELSE %] + <option value="2">Arrived</option> + [% END %] + [% IF ( serialslis.status3 ) %] + <option value="3" selected="selected">Late</option> + [% ELSE %] + <option value="3">Late</option> + [% END %] + [% IF ( serialslis.status4 ) %] + <option value="4" selected="selected">Missing</option> + [% ELSE %] + <option value="4">Missing</option> + [% END %] + [% IF ( serialslis.status7 ) %] + <option value="7" selected="selected">Claimed</option> + [% ELSE %] + <option value="7">Claimed</option> + [% END %] + [% IF ( serialslis.status5 ) %] + <option value="5" selected="selected">Not available</option> + [% ELSE %] + <option value="5">Not available</option> + [% END %] + [% IF ( serialslis.status6 ) %] + <option value="6" selected="selected">Delete</option> + [% ELSE %] + <option value="6">Delete</option> + [% END %] + [% IF serialslis.status8 %] + <option value="8" selected="selected">Stopped</option> + [% END %] </select> </td> @@ -344,39 +347,42 @@ $(document).ready(function() { <select name="status" size="1" id="addstatus[% newserialloo.serialid %]" onchange="if (this.value==2){unHideItems('items'+'[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]','[% newserialloo.serialid %]'); changeDate2('[% newserialloo.arriveddate %]')} else if (this.value==7){changeDate('[% newserialloo.arriveddate %]')} else { HideItems('items'+'[% newserialloo.subscriptionid %]'+[% newserialloo.serialid %],'label[% serialslis.subscriptionid %][% serialslis.serialid %]'); changeDate2('[% serialslis.planneddate %]')}" > <option value="">----</option> - [% IF ( newserialloo.status1 ) %] + [% IF ( newserialloo.status1 ) %] <option value="1" selected="selected">Expected</option> - [% END %] - [% IF ( newserialloo.status2 ) %] + [% END %] + [% IF ( newserialloo.status2 ) %] <option value="2" selected="selected">Arrived</option> - [% ELSE %] + [% ELSE %] <option value="2">Arrived</option> - [% END %] - [% IF ( newserialloo.status3 ) %] + [% END %] + [% IF ( newserialloo.status3 ) %] <option value="3" selected="selected">Late</option> - [% ELSE %] + [% ELSE %] <option value="3">Late</option> - [% END %] - [% IF ( newserialloo.status4 ) %] + [% END %] + [% IF ( newserialloo.status4 ) %] <option value="4" selected="selected">Missing</option> - [% ELSE %] + [% ELSE %] <option value="4">Missing</option> - [% END %] - [% IF ( newserialloo.status7 ) %] + [% END %] + [% IF ( newserialloo.status7 ) %] <option value="7" selected="selected">Claimed</option> - [% ELSE %] + [% ELSE %] <option value="7">Claimed</option> - [% END %] - [% IF ( newserialloo.status5 ) %] + [% END %] + [% IF ( newserialloo.status5 ) %] <option value="5" selected="selected">Not available</option> - [% ELSE %] + [% ELSE %] <option value="5">Not available</option> - [% END %] - [% IF ( newserialloo.status6 ) %] + [% END %] + [% IF ( newserialloo.status6 ) %] <option value="6" selected="selected">Delete</option> - [% ELSE %] + [% ELSE %] <option value="6">Delete</option> - [% END %] + [% END %] + [% IF newserialloo.status8 %] + <option value="8" selected="selected">Stopped</option> + [% END %] </select> </td> @@ -442,7 +448,9 @@ $(document).ready(function() { <li><a href="serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]" title="serial collection for [% subscription.bibliotitle %]">Serial collection #[% subscription.subscriptionid %]</a></li> <li><a href="subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" title="detail of the subscription">Subscription #[% subscription.subscriptionid %]</a></li> [% IF ( subscription.abouttoexpire ) %] + [% UNLESS subscription.closed %] <li><a href="#" onclick="javascript:popup([% subscription.subscriptionid %])">Renew #[% subscription.subscriptionid %]</a></li> + [% END %] [% END %] [% END %] <li><a href="/cgi-bin/koha/catalogue/[% default_bib_view %].pl?biblionumber=[% biblionumber %]" title="go to [% bibliotitle %]">Show biblio</a></li></ul> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-recieve.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-recieve.tt index 868d34e..04db346 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-recieve.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-recieve.tt @@ -137,6 +137,9 @@ function barcode_check(){ [% ELSE %] <option value="6">Delete</option> [% END %] + [% IF serialslis.status8 %] + <option value="8" selected="selected">Stopped</option> + [% END %] </select> [% IF ( serialslis.serialadditems ) %] <br /><br /> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt index 98ef4d5..ad1bf44 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt @@ -9,14 +9,25 @@ <script type="text/javascript"> //<![CDATA[ $(document).ready(function() { - var srlt = $("#srlt").dataTable($.extend(true, {}, dataTablesDefaults, { + var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, { "aoColumnDefs": [ { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false }, ], "sPaginationType": "four_button" } ) ); - srlt.fnAddFilters("filter", 750); + var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, { + "aoColumnDefs": [ + { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false }, + ], + "sPaginationType": "four_button" + } ) ); + + osrlt.fnAddFilters("filter", 750); + csrlt.fnAddFilters("filter", 750); + + $('#serialstabs').tabs(); + }); //]]> </script> @@ -33,9 +44,9 @@ <div class="yui-b"> [% INCLUDE 'serials-toolbar.inc' %] - <h2>Serials subscriptions</h2> + <h2>Serials subscriptions ([% total %] found)</h2> [% UNLESS ( done_searched ) %] - <div id="advsearch"> + <div id="advsearch" style="padding-bottom:3em;"> <form action="/cgi-bin/koha/serials/serials-search.pl" method="get"> <fieldset class="rows"> <legend>Search subscriptions</legend> @@ -85,86 +96,160 @@ </div> [% END %] [% IF ( done_searched ) %] - [% IF ( subscriptions ) %] - <table id="srlt"> - <thead> - <tr> - <th>ISSN</th> - <th>Title</th> - <th> Notes </th> - <th>Library</th> - <th>Call number</th> - <th>Expiration date</th> - [% IF ( routing && CAN_user_serials_routing ) %] - <th>Routing list</th> - [% END %] - <th> </th> - <th> </th> - </tr> - </thead> - <tfoot> - <tr> - <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td> - <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td> - <td><input type="text" class="filter" data-column_num="2" placeholder="Search notes" /></td> - <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td> - <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td> - <td><input type="text" class="filter" data-column_num="5" placeholder="Search expiration date" /></td> - [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %] - <td></td> - <td></td> - </tr> - </tfoot> - <tbody> - [% FOREACH subscription IN subscriptions %] - <tr> - <td> - [% IF ( subscription.issn ) %][% subscription.issn %] - [% END %] - </td> - <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a> - </td> - <td>[% IF ( subscription.notes ) %][% subscription.notes %][% END %] - [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] - </td> - <td> - [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] - </td> - <td> - [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] - </td> - <td> - [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %] - </td> - [% IF ( routing && CAN_user_serials_routing ) %] - <td> - [% IF ( subscription.cannotedit ) %] - - [% ELSE %] - [% IF ( subscription.routingedit ) %] - <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit</a> - ([% subscription.routingedit %]) - [% ELSE %] - <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&op=new">New</a> - [% END %] + [% IF ( total ) %] + <div id="serialstabs" class="toptabs" style="clear:both;"> + <ul class="ui-tabs-nav"> + <li><a href="#opened">Opened ([% openedsubscriptions.size || 0 %])</a></li> + <li><a href="#closed">Closed ([% closedsubscriptions.size || 0 %])</a></li> + </ul> + <div id="opened"> + [% IF openedsubscriptions %] + <table id="osrlt"> + <thead> + <tr> + <th>ISSN</th> + <th>Title</th> + <th> Notes </th> + <th>Library</th> + <th>Call number</th> + <th>Expiration date</th> + [% IF ( routing && CAN_user_serials_routing ) %] + <th>Routing list</th> + [% END %] + <th> </th> + <th> </th> + </tr> + </thead> + <tfoot> + <tr> + <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td> + <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td> + <td><input type="text" class="filter" data-column_num="2" placeholder="Search notes" /></td> + <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td> + <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td> + <td><input type="text" class="filter" data-column_num="5" placeholder="Search expiration date" /></td> + [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %] + <td></td> + <td></td> + </tr> + </tfoot> + <tbody> + [% FOREACH subscription IN openedsubscriptions %] + <tr> + <td> + [% IF ( subscription.issn ) %][% subscription.issn %] + [% END %] + </td> + <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a> + </td> + <td>[% IF ( subscription.notes ) %][% subscription.notes %][% END %] + [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] + </td> + <td> + [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] + </td> + <td> + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] + </td> + <td> + [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %] + </td> + [% IF ( routing && CAN_user_serials_routing ) %] + <td> + [% IF ( subscription.cannotedit ) %] + + [% ELSE %] + [% IF ( subscription.routingedit ) %] + <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit</a> + ([% subscription.routingedit %]) + [% ELSE %] + <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&op=new">New</a> + [% END %] + [% END %] + </td> + [% END %] + <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a> + </td> + <td> + [% IF ( subscription.cannotedit ) %] + + [% ELSE %] + [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a>[% END %] + [% END %] + </td> + </tr> + [% END %] + </tbody> + </table> + [% ELSE %] + There is no opened subscription for your search. + [% END %] + </div> + <div id="closed"> + [% IF closedsubscriptions %] + <table id="csrlt"> + <thead> + <tr> + <th>ISSN</th> + <th>Title</th> + <th> Notes </th> + <th>Library</th> + <th>Call number</th> + <th> </th> + <th> </th> + </tr> + </thead> + <tfoot> + <tr> + <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td> + <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td> + <td><input type="text" class="filter" data-column_num="2" placeholder="Search notes" /></td> + <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td> + <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td> + <td></td> + <td></td> + </tr> + </tfoot> + <tbody> + [% FOREACH subscription IN closedsubscriptions %] + <tr> + <td> + [% IF ( subscription.issn ) %] + [% subscription.issn %] + [% END %] + </td> + <td> + <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a> + </td> + <td> + [% IF ( subscription.notes ) %][% subscription.notes %][% END %] + [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] + </td> + <td> + [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] + </td> + <td> + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] + </td> + <td> + [% UNLESS subscription.cannotedit %] + <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&op=reopen&routing=[% subscription.routing %]&searched=1&title_filter=[% title_filter %]&ISSN_filter=[% ISSN_filter %]&EAN_filter=[% EAN_filter %]&published_filter=[% publisher_filter %]&bookseller_filter=[% bookseller_filter %]&branch_filter=[% branch_filter %]" onclick="return confirm(_('Are you sure you want to reopen this subscription?'));">Reopen</a> + [% ELSE %] + Cannot edit + [% END %] + </td> + <td> + <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a> + </td> + </tr> [% END %] - </td> - [% END %] - <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a> - </td> - <td> - [% IF ( subscription.cannotedit ) %] - - [% ELSE %] - [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a>[% END %] - [% END %] - </td> - </tr> + </tbody> + </table> + [% ELSE %] + There is no closed subscription for your search. [% END %] - </tbody> - </table> - [% ELSE %] - There is no subscription for your search. + </div> + </div> [% END %] [% END %] </div> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt index 44a2d8f..949b946 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt @@ -55,8 +55,12 @@ $(document).ready(function() { <div class="yui-b"> [% INCLUDE 'serials-toolbar.inc' %] - <h1>Subscription for [% bibliotitle %] </h1> - [% IF ( abouttoexpire ) %]<div class="dialog message">Subscription will expire [% enddate %]. <a href="#" id="renewsub">Renew this subscription</a>.</div>[% END %] + <h1>Subscription for [% bibliotitle%] [% IF closed %](closed)[% END %]</h1> + [% IF ( abouttoexpire ) %] + [% UNLESS closed %] + <div class="dialog message">Subscription will expire [% enddate %]. <a href="#" id="renewsub">Renew this subscription</a>.</div> + [% END %] + [% END %] [% IF ( NEEDSCONFIRMATION ) %] <div id="circ_needsconfirmation" class="dialog alert"> <h3>Please Confirm Subscription deletion</h3> @@ -374,27 +378,19 @@ $(document).ready(function() { [% serialslis.publisheddate %] </td> <td> - [% IF ( serialslis.status1 ) %] - Expected - [% END %] - [% IF ( serialslis.status2 ) %] - Arrived - [% END %] - [% IF ( serialslis.status3 ) %] - Late - [% END %] - [% IF ( serialslis.status4 ) %] - Missing - [% END %] - [% IF ( serialslis.status5 ) %] - Not available - [% END %] - [% IF ( serialslis.status7 ) %] - Claimed - [% IF ( serialslis.claimdate ) %] - [% serialslis.claimdate %] - [% END %] - [% END %] + [% IF ( serialslis.status1 ) %]Expected[% END %] + [% IF ( serialslis.status2 ) %]Arrived[% END %] + [% IF ( serialslis.status3 ) %]Late[% END %] + [% IF ( serialslis.status4 ) %]Missing[% END %] + [% IF ( serialslis.status5 ) %]Not issued[% END %] + [% IF ( serialslis.status6 ) %]Delete[% END %] + [% IF ( serialslis.status7 ) %] + Claimed + [% IF ( serialslis.claimdate ) %] + [% serialslis.claimdate %] + [% END %] + [% END %] + [% IF ( serialslis.status8 ) %]Stopped[% END %] </td> </tr> [% END %] diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt index 6b47afa..42ff735 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt @@ -200,12 +200,15 @@ function showlayer(numlayer){ </td> <td> [% serial.serialseq %] </td> - <td> [% IF ( serial.status1 ) %]Waiting[% END %] - [% IF ( serial.status2 ) %]Arrived[% END %] - [% IF ( serial.status3 ) %]Late[% END %] - [% IF ( serial.status4 ) %]Missing[% END %] - [% IF ( serial.status5 ) %]Not available[% END %] - [% IF ( serial.status7 ) %]Claimed[% END %] + <td> + [% IF ( serial.status1 ) %]Expected[% END %] + [% IF ( serial.status2 ) %]Arrived[% END %] + [% IF ( serial.status3 ) %]Late[% END %] + [% IF ( serial.status4 ) %]Missing[% END %] + [% IF ( serial.status5 ) %]Not available[% END %] + [% IF ( serial.status6 ) %]Delete[% END %] + [% IF ( serial.status7 ) %]Claimed[% END %] + [% IF ( serial.status8 ) %]Stopped[% END %] </td> <td class="subscriptionidfilterclass"> [% serial.subscriptionid %] </td> diff --git a/misc/cronjobs/serialsUpdate.pl b/misc/cronjobs/serialsUpdate.pl index 1de5a48..a5a376f 100755 --- a/misc/cronjobs/serialsUpdate.pl +++ b/misc/cronjobs/serialsUpdate.pl @@ -60,6 +60,7 @@ my $sth = $dbh->prepare(" WHERE serial.status = 1 AND periodicity <> 32 AND DATE_ADD(planneddate, INTERVAL CAST(graceperiod AS SIGNED) DAY) < NOW() + AND subscription.closed = 0 "); $sth->execute(); diff --git a/reports/serials_stats.pl b/reports/serials_stats.pl index 9aff54b..2b019c7 100755 --- a/reports/serials_stats.pl +++ b/reports/serials_stats.pl @@ -96,9 +96,18 @@ if($do_it){ while(my $row = $sth->fetchrow_hashref){ $row->{'enddate'} = format_date(GetExpirationDate($row->{'subscriptionid'})); $row->{'startdate'} = format_date($row->{'startdate'}); - push @datas, $row if ($expired || (not $expired && not HasSubscriptionExpired($row->{subscriptionid})) ); + push @datas, $row if ( + $expired + or ( + not $expired + and ( + not HasSubscriptionExpired($row->{subscriptionid}) + and not $row->{closed} + ) + ) + ); } - + if($output eq 'screen'){ $template->param(datas => \@datas, do_it => 1); diff --git a/serials/checkexpiration.pl b/serials/checkexpiration.pl index bf4b6e9..e831854 100755 --- a/serials/checkexpiration.pl +++ b/serials/checkexpiration.pl @@ -79,6 +79,7 @@ if ($date) { $subscription->{expirationdate} = $expirationdate; next if $expirationdate !~ /\d{4}-\d{2}-\d{2}/; # next if not in ISO format. + next if $subscription->{closed}; if ( Date_to_Days(split "-",$expirationdate) < Date_to_Days(split "-",$date) && Date_to_Days(split "-",$expirationdate) > Date_to_Days(&Today) ) { $subscription->{expirationdate}=format_date($subscription->{expirationdate}); diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index 4393546..7428494 100755 --- a/serials/serials-collection.pl +++ b/serials/serials-collection.pl @@ -101,8 +101,10 @@ my $subscriptioncount; my ($location, $callnumber); if (@subscriptionid){ my @subscriptioninformation=(); + my $closed = 0; foreach my $subscriptionid (@subscriptionid){ my $subs= GetSubscription($subscriptionid); + $closed = 1 if $subs->{closed}; $subs->{opacnote} =~ s/\n/\<br\/\>/g; $subs->{missinglist} =~ s/\n/\<br\/\>/g; $subs->{recievedlist} =~ s/\n/\<br\/\>/g; @@ -127,6 +129,7 @@ if (@subscriptionid){ my $tmpsubscription= GetFullSubscription($subscriptionid); @subscriptioninformation=(@$tmpsubscription,@subscriptioninformation); } + $template->param(closed => $closed); $subscriptions=PrepareSerialsData(\@subscriptioninformation); $subscriptioncount = CountSubscriptionFromBiblionumber($subscriptiondescs->[0]{'biblionumber'}); } else { diff --git a/serials/serials-search.pl b/serials/serials-search.pl index ac5d0d3..aaf64e6 100755 --- a/serials/serials-search.pl +++ b/serials/serials-search.pl @@ -46,6 +46,8 @@ my $biblionumber = $query->param('biblionumber') || ''; my $branch = $query->param('branch_filter') || ''; my $routing = $query->param('routing') || C4::Context->preference("RoutingSerials"); my $searched = $query->param('searched') || 0; +my @subscriptionids = $query ->param('subscriptionid'); +my $op = $query->param('op'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -58,6 +60,16 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +if ( $op and $op eq "close" ) { + for my $subscriptionid ( @subscriptionids ) { + C4::Serials::CloseSubscription( $subscriptionid ); + } +} elsif ( $op and $op eq "reopen" ) { + for my $subscriptionid ( @subscriptionids ) { + C4::Serials::ReopenSubscription( $subscriptionid ); + } +} + my @subscriptions; if ($searched){ @subscriptions = SearchSubscriptions( @@ -81,6 +93,15 @@ if ($routing) { } } +my (@openedsubscriptions, @closedsubscriptions); +for my $sub ( @subscriptions ) { + unless ( $sub->{closed} ) { + push @openedsubscriptions, $sub; + } else { + push @closedsubscriptions, $sub; + } +} + my $branches = GetBranches(); my @branches_loop; foreach (sort keys %$branches){ @@ -94,7 +115,9 @@ foreach (sort keys %$branches){ } $template->param( - subscriptions => \@subscriptions, + openedsubscriptions => \@openedsubscriptions, + closedsubscriptions => \@closedsubscriptions, + total => @openedsubscriptions + @closedsubscriptions, title_filter => $title, ISSN_filter => $ISSN, EAN_filter => $EAN, diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl index f3a50ac..009360b 100755 --- a/serials/subscription-detail.pl +++ b/serials/subscription-detail.pl @@ -34,6 +34,13 @@ my $issueconfirmed = $query->param('issueconfirmed'); my $dbh = C4::Context->dbh; my ($template, $loggedinuser, $cookie, $hemisphere); my $subscriptionid = $query->param('subscriptionid'); + +if ( $op and $op eq "close" ) { + C4::Serials::CloseSubscription( $subscriptionid ); +} elsif ( $op and $op eq "reopen" ) { + C4::Serials::ReopenSubscription( $subscriptionid ); +} + my $subs = GetSubscription($subscriptionid); $subs->{enddate} = GetExpirationDate($subscriptionid); -- 1.7.10.4