From 6587e61fc9d8e14d7fd966ac4b4bbb7e77f65ef9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart 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 ) %] [% 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 @@
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() { [% latestserial.serialseq %] [% latestserial.planneddate %] - [% 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 %] + + [% 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 %] + [% latestserial.notes %] [% 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 @@ + @@ -284,6 +285,7 @@ [% IF ( missingissue.status3 ) %]Late[% END %] [% IF ( missingissue.status4 ) %]Missing[% END %] [% IF ( missingissue.status7 ) %]Claimed[% END %] + [% IF ( missingissue.status8 ) %]Stopped[% END %] [% 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 %] - [% 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 %] [% 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 %] [% subscription.branchcode %] [% subscription.callnumber %] - [% subscription.notes %] [% IF ( subscription.subscriptionexpired ) %]
Subscription expired - [% END %] + [% subscription.notes %] + [% UNLESS subscription.closed %] + [% IF ( subscription.subscriptionexpired ) %] +
Subscription expired + [% END %] + [% ELSE %] +
Subscription closed + [% END %] [% IF ( routing && CAN_user_serials_routing ) %] - Edit routing list + [% UNLESS subscription.closed %] + Edit routing list + [% END %] [% END %] - [% IF ( subscription.abouttoexpire ) %] Renew - [% ELSE %] - [% IF ( subscription.subscriptionexpired ) %] Renew + [% UNLESS subscription.closed %] + [% IF ( subscription.abouttoexpire ) %] Renew + [% ELSE %] + [% IF ( subscription.subscriptionexpired ) %] Renew + [% ELSE %] +   + [% END %] + [% END %] [% ELSE %] -   - [% END %] +   [% END %] - [% END %] [% IF ( subscr ) %] @@ -194,8 +205,10 @@ $(document).ready(function() { [% IF ( CAN_user_serials_receive_serials ) %]

  - - [% IF ( subscriptions.size == 1 and !serialsadditems ) %] [% END %] + [% UNLESS subscription.closed %] + + [% IF ( subscriptions.size == 1 and !serialsadditems ) %] [% END %] + [% END %]

[% END %] @@ -234,7 +247,14 @@ $(document).ready(function() { [% serial.serialseq %] - [% 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 %] [% 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() { @@ -344,39 +347,42 @@ $(document).ready(function() { @@ -442,7 +448,9 @@ $(document).ready(function() {
  • Serial collection #[% subscription.subscriptionid %]
  • Subscription #[% subscription.subscriptionid %]
  • [% IF ( subscription.abouttoexpire ) %] + [% UNLESS subscription.closed %]
  • Renew #[% subscription.subscriptionid %]
  • + [% END %] [% END %] [% END %]
  • Show biblio
  • 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 %] [% END %] + [% IF serialslis.status8 %] + + [% END %] [% IF ( serialslis.serialadditems ) %]

    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 @@ @@ -33,9 +44,9 @@
    [% INCLUDE 'serials-toolbar.inc' %] -

    Serials subscriptions

    +

    Serials subscriptions ([% total %] found)

    [% UNLESS ( done_searched ) %] -
    +
    Search subscriptions @@ -85,86 +96,160 @@
    [% END %] [% IF ( done_searched ) %] - [% IF ( subscriptions ) %] - - - - - - - - - - [% IF ( routing && CAN_user_serials_routing ) %] - - [% END %] - - - - - - - - - - - - - [% IF ( routing && CAN_user_serials_routing ) %][% END %] - - - - - - [% FOREACH subscription IN subscriptions %] - - - - - - - - [% IF ( routing && CAN_user_serials_routing ) %] - -
    ISSNTitle Notes LibraryCall numberExpiration dateRouting list  
    - [% IF ( subscription.issn ) %][% subscription.issn %] - [% END %] - [% subscription.title |html %] - [% IF ( subscription.notes ) %][% subscription.notes %][% END %] - [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] - - [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] - - [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] - - [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %] - - [% IF ( subscription.cannotedit ) %] -   - [% ELSE %] - [% IF ( subscription.routingedit ) %] - Edit - ([% subscription.routingedit %]) - [% ELSE %] - New - [% END %] + [% IF ( total ) %] +
    + +
    + [% IF openedsubscriptions %] + + + + + + + + + + [% IF ( routing && CAN_user_serials_routing ) %] + + [% END %] + + + + + + + + + + + + + [% IF ( routing && CAN_user_serials_routing ) %][% END %] + + + + + + [% FOREACH subscription IN openedsubscriptions %] + + + + + + + + [% IF ( routing && CAN_user_serials_routing ) %] + + [% END %] + + + + [% END %] + +
    ISSNTitle Notes LibraryCall numberExpiration dateRouting list  
    + [% IF ( subscription.issn ) %][% subscription.issn %] + [% END %] + [% subscription.title |html %] + [% IF ( subscription.notes ) %][% subscription.notes %][% END %] + [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] + + [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] + + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] + + [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %] + + [% IF ( subscription.cannotedit ) %] +   + [% ELSE %] + [% IF ( subscription.routingedit ) %] + Edit + ([% subscription.routingedit %]) + [% ELSE %] + New + [% END %] + [% END %] + Issue history + + [% IF ( subscription.cannotedit ) %] +   + [% ELSE %] + [% IF ( CAN_user_serials_receive_serials ) %]Serial receive[% END %] + [% END %] +
    + [% ELSE %] + There is no opened subscription for your search. + [% END %] +
    +
    + [% IF closedsubscriptions %] + + + + + + + + + + + + + + + + + + + + + + + + + [% FOREACH subscription IN closedsubscriptions %] + + + + + + + + + [% END %] - - [% END %] - - - + +
    ISSNTitle Notes LibraryCall number  
    + [% IF ( subscription.issn ) %] + [% subscription.issn %] + [% END %] + + [% subscription.title |html %] + + [% IF ( subscription.notes ) %][% subscription.notes %][% END %] + [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %] + + [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %] + + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] + + [% UNLESS subscription.cannotedit %] + Reopen + [% ELSE %] + Cannot edit + [% END %] + + Issue history +
    Issue history - - [% IF ( subscription.cannotedit ) %] -   - [% ELSE %] - [% IF ( CAN_user_serials_receive_serials ) %]Serial receive[% END %] - [% END %] -
    + [% ELSE %] + There is no closed subscription for your search. [% END %] -
    - [% ELSE %] - There is no subscription for your search. +
    +
    [% END %] [% END %] 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() {
    [% INCLUDE 'serials-toolbar.inc' %] -

    Subscription for [% bibliotitle %]

    - [% IF ( abouttoexpire ) %]
    Subscription will expire [% enddate %]. Renew this subscription.
    [% END %] +

    Subscription for [% bibliotitle%] [% IF closed %](closed)[% END %]

    + [% IF ( abouttoexpire ) %] + [% UNLESS closed %] +
    Subscription will expire [% enddate %]. Renew this subscription.
    + [% END %] + [% END %] [% IF ( NEEDSCONFIRMATION ) %]

    Please Confirm Subscription deletion

    @@ -374,27 +378,19 @@ $(document).ready(function() { [% serialslis.publisheddate %] - [% 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 %] [% 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){ [% serial.serialseq %] - [% 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 %] + + [% 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 %] [% serial.subscriptionid %] 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/\/g; $subs->{missinglist} =~ s/\n/\/g; $subs->{recievedlist} =~ s/\n/\/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