Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tt
Nick Clemens 6754e92c1c Bug 25760: (bug 15422 follow-up) Display record with hold ratio greater than or equal to the value entered
On bug 15422 we made it so that only holds with copies to buy to acheive the holds ratio
showed

Users have reported that they want to see record where there are 0 copies to buy i.e.
the holds ration matches the value entered

This patch changes the criteria for returning holds to be if the ratio for a given title
is equal to or greater then the ratio specified in the form

I also renamed 'ratiocalc' to 'copies_to_buy' since that is what is contains

Test plan:
1. Create bibliographic records with 1, 2 and 3 items
2. Place 1 hold on each of them
3. Go to the Hold ratios report and search with ratio = 1, 2 then 3
4. You expect to see:
   the title with 1 item with ratio 1
   nothing otherwise
5. Place another hold on each of the record
6. Repeat 3 you expect to see:
   titles with 1 or 2 items with ratio 1
   title with 1 item for ratio 2
   nothing with ratio 3
7. Place another hold on each of the record
8. Repeat 3 you expect to see:
   titles with 1 or 2 or 3 items with ratio 1
   title with 1 item or 2 items for ratio 2
   nothing with ratio 3
9. Make sure there is no regression in the test plan of bug 15422

Comments from Frank Hansen:

Some comments.
When I adding the third hold on each record in step 7, It will result in
the following result:

titles with 1 or 2 or 3 items with ratio 1
title with 1 items with ratio 2 because the title with 2 items will get
a ratio of 1.50 and not 2.
title with 1 items with with ratio 3

Signed-off-by: Frank Hansen <frank.hansen@ub.lu.se>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-05-10 15:46:55 +02:00

215 lines
7.7 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE KohaDates %]
[% USE AuthorisedValues %]
[% USE Branches %]
[% USE ItemTypes %]
[% USE TablesSettings %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Hold ratios &rsaquo; Circulation &rsaquo; Koha</title>
[% INCLUDE 'doc-head-close.inc' %]
<style>
.sql { display: none; }
.ulined { text-decoration: underline; }
.ratiolimit:link { color: blue; cursor: pointer; }
.ratiolimit:hover { color: blue; text-decoration: underline; }
#holdst ul li { list-style: outside url("[% interface | html %]/[% theme | html %]/img/item-bullet.gif") disc; }
</style>
</head>
<body id="circ_reserveratios" class="circ">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'circ-search.inc' %]
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li>
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
</li>
<li>
<a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a>
</li>
<li>
<a href="#" aria-current="page">
Hold ratios
</a>
</li>
</ol>
</nav>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
<h1>Hold ratios to calculate items needed</h1>
<h3>Calculated on [% todaysdate | $KohaDates %]. From [% from | $KohaDates %]
to [% to | $KohaDates %]</h3>
<p>These items have a hold ratio &ge; [% ratio | html %].</p>
<div class="sql">[% sql | html %]</div>
[% IF ( reserveloop ) %]
<table id="holdst">
<thead>
<tr>
<th>Holds</th>
<th>Items</th>
<th>Hold ratio</th>
<th>Title</th>
<th>Home libraries</th>
<th>Holding libraries</th>
<th>Location</th>
<th>Itype</th>
<th>Call numbers</th>
<th>Items needed</th>
</tr>
</thead>
<tbody>
[% FOREACH reserveloo IN reserveloop %]
<tr>
<td><p>[% reserveloo.reservecount | html %]</p></td>
<td><p>[% reserveloo.itemcount | html %]</p></td>
<td><a href="#" class="ratiolimit">[% reserveloo.thisratio | html %]</a></td>
<td>
[% INCLUDE 'biblio-title.inc' biblio=reserveloo link = 1 %][% IF ( reserveloo.author ) %] by [% reserveloo.author | html %][% END %]
</td>
<td>
<ul>
[% FOREACH homebranch IN reserveloo.homebranch_list %]
<li>[% Branches.GetName ( homebranch ) | html %]</li>
[% END %]
</ul>
</td>
<td>
<ul>
[% FOREACH holdingbranch IN reserveloo.holdingbranch_list %]
<li>[% Branches.GetName ( holdingbranch ) | html %]</li>
[% END %]
</ul>
</td>
<td>
<ul>
[% FOREACH location IN reserveloo.location %]
<li>[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => location ) | html %]</li>
[% END %]
</ul>
</td>
<td>
<ul>
[% FOREACH itype IN reserveloo.itype %]
<li>[% ItemTypes.GetDescription( itype ) | html %]</li>
[% END %]
</ul>
</td>
<td>
<ul>
[% FOREACH listcall IN reserveloo.listcall %]
<li>[% listcall | html %]</li>
[% END %]
</ul>
</td>
<td class="actions">
<p>
[% IF ( reserveloo.thisratio_atleast1 ) %]
[% IF ( CAN_user_acquisition && basketno && booksellerid ) %]<!-- [% reserveloo.copies_to_buy | html %] -->
<a href="/cgi-bin/koha/acqui/neworderempty.pl?biblionumber=[% reserveloo.biblionumber | uri %]&amp;booksellerid=[% booksellerid | uri %]&amp;basketno=[% basketno | uri %]&amp;rr_quantity_to_order=[% reserveloo.copies_to_buy | uri %]" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> [% reserveloo.copies_to_buy | html %] to order</a>
[% ELSE %]
<strong>[% reserveloo.copies_to_buy | html %] to order</strong>
[% END %]
[% IF ( reserveloo.pendingorders ) %]<br><strong>[% reserveloo.pendingorders | html %] pending</strong>[% END %]
[% ELSE %]
0 to order
[% END %]
</p>
</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
<strong>No items found.</strong>
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
<form action="/cgi-bin/koha/circ/reserveratios.pl" method="post" >
<fieldset class="brief">
<h4>Refine results:</h4>
<ol>
<li>
<label for="ratio">Hold ratio (greater than or equal to):</label>
<input type="text" size="5" id="ratio" name="ratio" value="[% ratio | html %]" />
</li>
<li class="checkbox">
[% IF include_ordered %]
<input id="include_ordered" name="include_ordered" type="checkbox" checked="checked"/>
[% ELSE %]
<input id="include_ordered" name="include_ordered" type="checkbox"/>
[% END %]
<label for="include_ordered">Include ordered</label>
</li>
<li class="checkbox">
[% IF include_suspended %]
<input id="include_suspended" name="include_suspended" type="checkbox" checked="checked"/>
[% ELSE %]
<input id="include_suspended" name="include_suspended" type="checkbox"/>
[% END %]
<label for="include_suspended">Include suspended</label>
</li>
<li>
<label for="from">Start date:</label>
<input type="text" size="10" id="from" name="from" value="[% from | $KohaDates %]" class="datepickerfrom" />
</li>
<li>
<label for="to">End date:</label>
<input size="10" id="to" name="to" value="[% to | $KohaDates %]" type="text" class="datepickerto" />
</li>
</ol>
(inclusive)
<fieldset class="action"><input type="submit" value="Go" class="submit"/></fieldset>
</fieldset>
[% IF ( CAN_user_acquisition && basketno && booksellerid ) %]
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
<input type="hidden" name="basketno" value="[% basketno | html %]" />
[% END %]
</form>
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'datatables.inc' %]
[% INCLUDE 'columns_settings.inc' %]
<script>
var columns_settings = [% TablesSettings.GetColumns( 'circ', 'holdsratios', 'holds-ratios', 'json' ) | $raw %];
$(document).ready(function() {
$(".ratiolimit").on("click", function(e) {
e.preventDefault();
$("#ratio").val($(this).html());
});
KohaTable("holdst", {
"aaSorting": [ [2,'desc'], [3,'asc'] ],
"aoColumnDefs": [
{ "aTargets": [ 0,1,2,8 ], "sType": "natural" },
{ "aTargets": [ 3 ], "sType": "anti-the" },
],
"sPaginationType": "full",
"autoWidth": false
}, columns_settings);
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]