From c23e903e982c7b0c15f02bc858c3c238a69c7d9e Mon Sep 17 00:00:00 2001
From: Lucas Gass <lucas@bywatersolutions.com>
Date: Tue, 27 Jul 2021 21:17:48 +0000
Subject: [PATCH] Bug 28762: add staff item-status.inc and better handle
 statues on course-details.tt

This patch adds an item-status.inc to the staff side much like what is already in place on the OPAC.

To test:
1. create a course in course reserves, add an item to it.
2. confirm your item shows Available for its status on course-details.pl
3. edit your item to be withdrawn, lost, damaged, notforloan, and restricted use
4. reload course-details.pl, confirm it still shows available
5. apply patch
6. repeat step 3 with each of the statuses and make sure it correctly shows on course-details.pl

Signed-off-by: Hayley Pelham <hayleypelham@catalyst.net.nz>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
---
 .../prog/css/src/staff-global.scss            |   6 +-
 .../prog/en/includes/item-status.inc          | 107 ++++++++++++++++++
 .../modules/course_reserves/course-details.tt |   8 +-
 3 files changed, 113 insertions(+), 8 deletions(-)
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/item-status.inc

diff --git a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
index bde56089180..67fc4f7f785 100644
--- a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
+++ b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
@@ -2261,7 +2261,11 @@ td {
 
 .lost,
 .dmg,
-.wdn {
+.wdn,
+.restricted,
+.damaged,
+.lost,
+.withdrawn {
     color: #990000;
     display: block;
 }
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/item-status.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/item-status.inc
new file mode 100644
index 00000000000..7da27283f62
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/item-status.inc
@@ -0,0 +1,107 @@
+[% USE Branches %]
+[% USE AuthorisedValues %]
+[% SET itemavailable = 1 %]
+
+[%#- This include takes two parameters: an item structure -%]
+[%#- and an optional loan (issue) structure.  The issue -%]
+[%#- structure is used by course reserves pages, which do -%]
+[%#- not use an API to fetch items that populates item.datedue. -%]
+
+[% IF ( item.itemlost ) %]
+    [% SET itemavailable = 0 %]
+    [% av_lib_include = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => item.itemlost ) %]
+    [% IF ( av_lib_include ) %]
+        <span class="item-status lost">[% av_lib_include | html %]</span>
+    [% ELSE %]
+        <span class="item-status lost">Item lost</span>
+    [% END %]
+[% END %]
+
+[% IF item.isa('Koha::Item') %]
+    [% SET datedue = issue.date_due %]
+    [% SET onsite_checkout = issue.onsite_checkout %]
+[% ELSE %]
+    [% SET datedue = item.datedue || issue.date_due %]
+    [% SET onsite_checkout = item.onsite_checkout %]
+[% END %]
+[% IF datedue %]
+    [% SET itemavailable = 0 %]
+    [% IF onsite_checkout %]
+        [% IF ( OPACShowCheckoutName ) %]
+            <span class="item-status checkedout">Currently in local use by [% item.firstname | html %] [% item.surname | html %] [% IF ( item.cardnumber ) %]([% item.cardnumber | html %])[% END %]</span>
+        [% ELSE %]
+            <span class="item-status checkedout">Currently in local use</span>
+        [% END %]
+    [% ELSE %]
+        [% IF ( OPACShowCheckoutName ) %]
+            <span class="item-status checkedout">Checked out to [% item.firstname | html %] [% item.surname | html %] [% IF ( item.cardnumber ) %]([% item.cardnumber | html %])[% END %]</span>
+        [% ELSE %]
+            <span class="item-status checkedout">Checked out</span>
+        [% END %]
+    [% END %]
+[% END %]
+
+[% IF NOT ( item.isa('Koha::Item') ) AND item.transfertwhen %] [%# transfertwhen is set in C4::Search, do not have it for course reserves %]
+    [% SET itemavailable = 0 %]
+    <span class="item-status intransit">In transit from [% Branches.GetName( item.transfertfrom ) | html %]
+    to [% Branches.GetName( item.transfertto ) | html %] since [% item.transfertwhen | $KohaDates %]</span>
+[% END %]
+
+[% IF NOT( item.isa('Koha::Item') ) AND item.waiting %] [%# Not sure where does come from this waiting flag %]
+    [% SET itemavailable = 0 %]
+    <span class="item-status onhold">On hold</span>
+[% END %]
+
+[% IF ( item.withdrawn ) %]
+    [% SET itemavailable = 0 %]
+    [% av_lib_include = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => item.withdrawn ) %]
+    [% IF av_lib_include %]
+        <span class="item-status withdrawn">[% av_lib_include | html %]</span>
+    [% ELSE %]
+        <span class="item-status withdrawn">Item withdrawn</span>
+    [% END %]
+[% END %]
+
+
+[% IF NOT ( item.isa('Koha::Item') ) AND item.itemnotforloan %]
+    [% SET itemavailable = 0 %]
+    [% IF ( item.notforloanvalueopac ) %]
+        <span class="item-status notforloan">[% item.notforloanvalueopac | html %]</span>
+    [% ELSE %]
+        <span class="item-status notforloan">Not for loan</span>
+    [% END %]
+[% ELSIF NOT ( item.isa('Koha::Item') ) AND item.notforloan_per_itemtype %]
+    [% SET itemavailable = 0 %]
+    <span class="item-status notforloan">Not for loan</span>
+[% END %]
+
+[% IF ( item.damaged ) %]
+    [% SET itemavailable = 0 %]
+    [% av_lib_include = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => item.damaged ) %]
+    [% IF av_lib_include %]
+        <span class="item-status damaged">[% av_lib_include | html %]</span>
+    [% ELSE %]
+        <span class="item-status damaged">Item damaged</span>
+    [% END %]
+[% END %]
+
+[% IF ( item.restricted ) %]
+    [% SET itemavailable = 0 %]
+    [% av_lib_include = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.restricted', authorised_value => item.restricted ) %]
+    [% IF av_lib_include %]
+        <span class="item-status restricted">[% av_lib_include | html %]</span>
+    [% ELSE %]
+        <span class="item-status restricted">On order</span>
+    [% END %]
+[% END %]
+
+[% IF item.has_pending_hold %]
+    [% SET itemavailable = 0 %]
+    <span class="item-status pendinghold">Pending hold</span>
+[% END %]
+
+[% IF ( itemavailable ) %]
+    [% IF NOT item.isa('Koha::Item') %]
+    <span class="item-status available">Available</span>
+    [% END %]
+[% END %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
index dfcb472ba69..acda85b512c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
@@ -292,13 +292,7 @@
                                     </td>
 
                                     <td class="status">
-                                        <span>
-                                        [% IF cr.item.onloan %]
-                                            <span>Checked out</span>
-                                        [% ELSE %]
-                                            <span>Available</span>
-                                        [% END %]
-                                        </span>
+                                        [% INCLUDE 'item-status.inc' item=cr.item issue=cr.issue %]
                                     </td>
 
                                     [% IF CAN_user_coursereserves_add_reserves || CAN_user_coursereserves_delete_reserves %]
-- 
2.44.0