From 5538208c4bf7464cc5d0e0c45d80e14d494cc35c Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Fri, 5 Jul 2024 14:47:42 +0200
Subject: [PATCH] Bug 37247: Fix display of "closed"

The subscription was not shown as closed after we closed it.
This is because "closed" is not passed to the template.
It seems more reliable to rely on the subscription object (that is passed to both
serials/serials-collection.tt and serials/subscription-detail.tt, the
others are not showing the Reopen/Close buttons)

Also fetch the subscription object after and reopen/close it to display
accurate values.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
---
 .../intranet-tmpl/prog/en/includes/serials-toolbar.inc      | 6 +++---
 .../prog/en/modules/serials/subscription-detail.tt          | 4 ++--
 serials/subscription-detail.pl                              | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

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 7757a9af70a..e29f4e82104 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
@@ -54,14 +54,14 @@
         [% END %]
 
         [% IF not cannotedit or CAN_user_serials_receive_serials %]
-            [% IF CAN_user_serials_renew_subscription and not closed %]
+            [% IF CAN_user_serials_renew_subscription and not subscription.closed %]
                 <div class="btn-group"><a id="renew" class="btn btn-default" href="#"><i class="fa-solid fa-rotate"></i> Renew</a></div>
             [% END %]
-            [% IF CAN_user_serials_receive_serials and not closed %]
+            [% IF CAN_user_serials_receive_serials and not subscription.closed %]
                 <div class="btn-group"><a id="receive" class="btn btn-default" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscriptionid | html %]&amp;serstatus=1,3"><i class="fa fa-inbox"></i> Receive</a></div>
             [% END %]
             [% UNLESS cannotedit %]
-                [% IF closed %]
+                [% IF subscription.closed %]
                     <div class="btn-group">
                         <form action="subscription-detail.pl" method="post">
                             [% INCLUDE 'csrf-token.inc' %]
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 27aab7ad8da..96e3b2f50cb 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
@@ -44,10 +44,10 @@
                 [% INCLUDE 'serials-toolbar.inc' %]
                 [% INCLUDE 'mana/mana-comment-status.inc' %]
 
-                <h1>Subscription for [% INCLUDE 'biblio-title.inc' biblio=subscription.biblio link = 0 %] [% IF closed %](closed)[% END %]</h1>
+                <h1>Subscription for [% INCLUDE 'biblio-title.inc' biblio=subscription.biblio link = 0 %] [% IF subscription.closed %](closed)[% END %]</h1>
 
                 [% IF ( abouttoexpire ) %]
-                    [% UNLESS closed %]
+                    [% UNLESS subscription.closed %]
                         <div class="dialog message">Subscription will expire [% enddate | html %]. <a href="#" id="renewsub">Renew this subscription</a>.</div>
                     [% END %]
                 [% END %]
diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl
index 2f3518d4a8a..55c7a65ae4c 100755
--- a/serials/subscription-detail.pl
+++ b/serials/subscription-detail.pl
@@ -62,8 +62,6 @@ $subs->{enddate} ||= GetExpirationDate($subscriptionid);
 my ($totalissues,@serialslist) = GetSerials($subscriptionid);
 $totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
 
-my $subscription = Koha::Subscriptions->find( $subscriptionid );
-
 if ( $op eq "cud-close" ) {
     C4::Serials::CloseSubscription( $subscriptionid );
 } elsif ( $op eq "cud-reopen" ) {
@@ -123,6 +121,8 @@ my @irregular_issues = split /;/, $subs->{irregularity};
 my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subs->{periodicity});
 my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern});
 
+my $subscription = Koha::Subscriptions->find( $subscriptionid );
+
 $template->param(
     available_additional_fields => Koha::AdditionalFields->search( { tablename => 'subscription' } ),
     additional_field_values => { map { $_->field->name => $_->value } $subscription->additional_field_values->as_list },
-- 
2.39.2