Koha/koha-tmpl/intranet-tmpl/prog/en/modules/members/holdshistory.tt
Joonas Kylmälä 0e1d291b14 Bug 12556: Add new "in processing" state to holds
This adds new syspref, HoldsNeedProcessingSIP, which controls whether
a hold that is related to item will be filled automatically or not. If
the user has enabled the syspref then instead of fulfilling the hold
automatically the hold will go to "in processing" state.

To test:
 1. Checkout a book to patron A
 2. Place a bib level hold to the book for B
 3. Patron A returns the book via SIP, to simulate this use:
        ./misc/sip_cli_emulator.pl -su koha -sp koha -l CPL -a 127.0.0.1 -p 6001 --item <ItemBarcode> -m checkin
 4. Notice that no notification is generated for Patron B about hold
    and that the hold status in intranet and opac is "In Processing".
 5. Notice that patron A (or other patrons) cannot checkout a book
    that is in processing, because it is considered to be attached to
    the holdee (similarly to the waiting state):
        ./misc/sip_cli_emulator.pl -su koha -sp koha -l CPL -a 127.0.0.1 -p 6001 --patron <PatronABarcode> --item <ItemBarcode> -m checkout

Signed-off-by: Timothy Alexis Vass <timothy_alexis.vass@ub.lu.se>
Rebased-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-10-14 14:50:07 +02:00

152 lines
5.2 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE KohaDates %]
[% USE Koha %]
[% USE AuthorisedValues %]
[% USE Branches %]
[% USE TablesSettings %]
[% USE ItemTypes %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Holds history for [% INCLUDE 'patron-title.inc' no_html = 1 %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="pat_holdshistory" class="pat">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'patron-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> &rsaquo; Holds history for [% INCLUDE 'patron-title.inc' %]</div>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% INCLUDE 'members-toolbar.inc' %]
<h1>Holds history</h1>
[% UNLESS Koha.Preference('intranetreadinghistory') %]
<div class="dialog alert">Staff members are not allowed to access patron's holds history</div>
[% ELSIF is_anonymous %]
<div class="dialog alert">This is the anonymous patron, so no holds history is displayed.</div>
[% ELSIF ( !holds ) %]
<div class="dialog message">This patron has no holds history.</div>
[% ELSE %]
[% SET show_itemtype_column = Koha.Preference('AllowHoldItemTypeSelection') %]
<div id="holdshistory">
<table id="table_holdshistory">
<thead>
<tr>
<th class="anti-the">Title</th>
<th>Author</th>
<th>Barcode</th>
<th>Library</th>
<th class="title-string">Hold date</th>
<th class="title-string">Expiration date</th>
<th class="title-string">Waiting date</th>
<th class="title-string">Cancellation date</th>
[% IF show_itemtype_column %]
<th>Requested item type</th>
[% END %]
<th>Status</th>
</tr>
</thead>
<tbody>
[% FOREACH hold IN holds %]
<tr>
<td>[% INCLUDE 'biblio-title.inc' biblio=hold.biblio link = 1 %]</td>
<td>[% hold.biblio.author | html %]</td>
<td>[% hold.item.barcode | html %]</td>
<td>[% Branches.GetName( hold.branchcode ) | html %]</td>
<td><span title="[% hold.reservedate | html %]">[% hold.reservedate | $KohaDates %]</span></td>
<td>
[% IF hold.expirationdate %]
<span title="[% hold.expirationdate | html %]">[% hold.expirationdate | $KohaDates %]</span>
[% ELSE %]
<span title="0000-00-00"></span>
[% END %]
</td>
<td>
[% IF hold.waitingdate %]
<span title="[% hold.waitingdate | html %]">[% hold.waitingdate | $KohaDates %]</span>
[% ELSE %]
<span title="0000-00-00"></span>
[% END %]
</td>
<td>
[% IF hold.cancellationdate %]
<span title="[% hold.cancellationdate | html %]">[% hold.cancellationdate | $KohaDates %]</span>
[% ELSE %]
<span title="0000-00-00"></span>
[% END %]
</td>
[% IF show_itemtype_column %]
<td>
[% IF hold.itemtype %]
[% ItemTypes.GetDescription( hold.itemtype ) | html %]
[% ELSE %]
<span>Any item type</span>
[% END %]
</td>
[% END %]
<td>
[% IF hold.found == 'F' %]
Fulfilled
[% ELSIF hold.cancellationdate %]
Cancelled
[% IF hold.cancellation_reason %]
([% AuthorisedValues.GetByCode('HOLD_CANCELLATION', hold.cancellation_reason) | html %])
[% END %]
[% ELSIF hold.found == 'W' %]
Waiting
[% ELSIF hold.found == 'P' %]
Processing
[% ELSIF hold.found == 'T' %]
In transit
[% ELSE %]
Pending
[% END %]
</td>
</tr>
[% END %]
</tbody>
</table>
</div>
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'circ-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'datatables.inc' %]
[% INCLUDE 'columns_settings.inc' %]
[% INCLUDE 'str/members-menu.inc' %]
[% Asset.js("js/members-menu.js") | $raw %]
<script>
$(document).ready(function() {
var columns_settings = [% TablesSettings.GetColumns('members', 'holdshistory', 'holdshistory-table', 'json') %];
[% UNLESS show_itemtype_column %]
//Remove item type column settings
columns_settings = columns_settings.filter(function(c){return c['columnname'] != 'itemtype';});
[% END %]
var table = KohaTable("table_holdshistory", {
"sPaginationType": "full",
"aaSorting": [[4, 'desc']],
"sDom": 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>',
}, columns_settings);
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]