1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha › Reports › Holds statistics [% IF ( do_it ) %]› Results[% END %]</title>
3 [% INCLUDE 'doc-head-close.inc' %]
4 [% INCLUDE 'calendar.inc' %]
5 <style type="text/css">
10 [% INCLUDE 'header.inc' %]
11 [% INCLUDE 'cat-search.inc' %]
13 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a> [% IF ( do_it ) %]› <a href="/cgi-bin/koha/reports/reserves_stats.pl">Holds statistics</a> › Results [% ELSE %]› Holds statistics[% END %]</div>
15 <div id="doc3" class="yui-t2">
23 <h1>Holds statistics</h1>
24 [% IF ( loopfilter ) %]
27 [% FOREACH loopfilte IN loopfilter %]
28 [% IF ( loopfilte.err ) %]<li class="error">Error:
29 [% ELSIF ( loopfilte.sql ) %]<li class="sql">
32 [% loopfilte.crit %] [% loopfilte.filter %]
38 [% FOREACH mainloo IN mainloop %]
42 <th>[% mainloo.line %] / [% mainloo.column %]</th>
43 [% FOREACH loopco IN mainloo.loopcol %]
44 <th>[% loopco.coltitle_display |html %]</th>
48 [% FOREACH loopro IN mainloo.looprow %]
49 <tr[% UNLESS ( loop.odd ) %] class="highlight"[% END %]>
50 <td>[% DEFAULT loopro.rowtitle_display="UNKNOWN VALUE" |html %]</td>
51 [% FOREACH loopcel IN loopro.loopcell %]
53 [% IF ( loopcel.url_complement ) %]<a href="reserves_stats.pl?output=[% loopcel.output %]&[% loopcel.url_complement %]">[% DEFAULT loopcel.value=" " %]</a>[% ELSE %][% DEFAULT loopcel.value=" " %][% END %]
56 <td align="center">[% loopro.totalrow %]</td>
61 [% FOREACH loopfoote IN mainloo.loopfooter %]
62 <th>[% loopfoote.totalcol %]</th>
64 <th>[% mainloo.total %]</th>
71 <form method="post" action="/cgi-bin/koha/reports/reserves_stats.pl">
72 <fieldset class="rows">
73 <legend>Holds statistics</legend><table>
85 <td><input type="radio" name="Line" value="reservestatus" /></td>
86 <td><input type="radio" name="Column" value="reservestatus" checked="checked" /></td>
88 <input type="checkbox" name="filter_reservestatus_or_1" value="1"> Asked</input>
89 <input type="checkbox" name="filter_reservestatus_or_2" value="2"> Processing</input>
90 <input type="checkbox" name="filter_reservestatus_or_3" value="3"> Waiting</input>
91 <input type="checkbox" name="filter_reservestatus_or_4" value="4"> Satisfied</input>
92 <input type="checkbox" name="filter_reservestatus_or_5" value="5"> Cancelled</input>
95 <tr class="highlight">
97 <td><input type="radio" name="Line" value="reservedate" /></td>
98 <td><input type="radio" name="Column" value="reservedate" /></td>
99 <td><label for="reservedate_begin">From</label> <input type="text" size="10" id="filter_reservedate_begin" name="filter_reservedate_begin" />
100 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openreservedateFrom" style="cursor: pointer;" />
101 <script type="text/javascript">
103 function validate1(date) {
104 var day = date.getDate();
105 var month = date.getMonth() + 1;
106 var year = date.getFullYear();
107 var weekDay = date.getDay();
108 var dayMonth = month + '-' + day;
109 var dateString = year + '-' + month + '-' + day;
110 var dateTo = document.getElementById('filter_reservedate_end').value.split("-");
111 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
112 if (date > limitDate) {
119 inputField : "filter_reservedate_begin",
120 ifFormat : "[% DHTMLcalendar_dateformat %]",
121 button : "openreservedateFrom",
122 disableFunc : validate1,
123 dateStatusFunc : validate1
127 <label for="filter_reservedate_end">To</label> <input size="10" id="filter_reservedate_end" name="filter_reservedate_end" value="" type="text" />
128 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openreservedateTo" style="cursor: pointer;" border="0" />
129 <script type="text/javascript">
131 function validate2(date) {
132 var day = date.getDate();
133 var month = date.getMonth() + 1;
134 var year = date.getFullYear();
135 var weekDay = date.getDay();
136 var dayMonth = month + '-' + day;
137 var dateString = year + '-' + month + '-' + day;
138 var dateFrom = document.getElementById('filter_reservedate_begin').value.split("-");
139 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
140 if (limitDate > date) {
147 inputField : "filter_reservedate_end",
148 ifFormat : "[% DHTMLcalendar_dateformat %]",
149 button : "openreservedateTo",
150 disableFunc : validate2,
151 dateStatusFunc : validate2
158 <td>Notification Date</td>
159 <td><input type="radio" name="Line" value="notificationdate" /></td>
160 <td><input type="radio" name="Column" value="notificationdate" /></td>
161 <td><label for="filter_notificationdate_begin">From</label> <input type="text" size="10" id="filter_notificationdate_begin" name="filter_notificationdate_begin" />
162 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="opennotificationdateFrom" style="cursor: pointer;" />
163 <script type="text/javascript">
165 function validate1(date) {
166 var day = date.getDate();
167 var month = date.getMonth() + 1;
168 var year = date.getFullYear();
169 var weekDay = date.getDay();
170 var dayMonth = month + '-' + day;
171 var dateString = year + '-' + month + '-' + day;
172 var dateTo = document.getElementById('filter_notificationdate_end').value.split("-");
173 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
174 if (date > limitDate) {
181 inputField : "filter_notificationdate_begin",
182 ifFormat : "[% DHTMLcalendar_dateformat %]",
183 button : "opennotificationdateFrom",
184 disableFunc : validate1,
185 dateStatusFunc : validate1
189 <label for="filter_notificationdate_end">To</label> <input size="10" id="filter_notificationdate_end" name="filter_notificationdate_end" value="" type="text" />
190 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="opennotificationdateTo" style="cursor: pointer;" border="0" />
191 <script type="text/javascript">
193 function validate2(date) {
194 var day = date.getDate();
195 var month = date.getMonth() + 1;
196 var year = date.getFullYear();
197 var weekDay = date.getDay();
198 var dayMonth = month + '-' + day;
199 var dateString = year + '-' + month + '-' + day;
200 var dateFrom = document.getElementById('filter_notificationdate_begin').value.split("-");
201 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
202 if (limitDate > date) {
209 inputField : "filter_notificationdate_end",
210 ifFormat : "[% DHTMLcalendar_dateformat %]",
211 button : "opennotificationdateTo",
212 disableFunc : validate2,
213 dateStatusFunc : validate2
220 <td>Reminder Date</td>
221 <td><input type="radio" name="Line" value="reminderdate" /></td>
222 <td><input type="radio" name="Column" value="reminderdate" /></td>
223 <td><label for="filter_reminderdate_begin">From</label> <input type="text" size="10" id="filter_reminderdate_begin" name="Filter" />
224 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openreminderdateFrom" style="cursor: pointer;" />
225 <script type="text/javascript">
227 function validate1(date) {
228 var day = date.getDate();
229 var month = date.getMonth() + 1;
230 var year = date.getFullYear();
231 var weekDay = date.getDay();
232 var dayMonth = month + '-' + day;
233 var dateString = year + '-' + month + '-' + day;
234 var dateTo = document.getElementById('filter_reminderdate_end').value.split("-");
235 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
236 if (date > limitDate) {
243 inputField : "filter_reminderdate_begin",
244 ifFormat : "[% DHTMLcalendar_dateformat %]",
245 button : "openreminderdateFrom",
246 disableFunc : validate1,
247 dateStatusFunc : validate1
251 <label for="filter_reminderdate_end">To</label> <input size="10" id="filter_reminderdate_end" name="filter_reminderdate_end" value="" type="text" />
252 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openreminderdateTo" style="cursor: pointer;" border="0" />
253 <script type="text/javascript">
255 function validate2(date) {
256 var day = date.getDate();
257 var month = date.getMonth() + 1;
258 var year = date.getFullYear();
259 var weekDay = date.getDay();
260 var dayMonth = month + '-' + day;
261 var dateString = year + '-' + month + '-' + day;
262 var dateFrom = document.getElementById('filter_reminderdate_begin').value.split("-");
263 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
264 if (limitDate > date) {
271 inputField : "filter_reminderdate_end",
272 ifFormat : "[% DHTMLcalendar_dateformat %]",
273 button : "openreminderdateTo",
274 disableFunc : validate2,
275 dateStatusFunc : validate2
282 <td>Waiting Date</td>
283 <td><input type="radio" name="Line" value="waitingdate" /></td>
284 <td><input type="radio" name="Column" value="waitingdate" /></td>
285 <td><label for="filter_waitingdate_begin">From</label> <input type="text" size="10" id="filter_waitingdate_begin" name="filter_waitingdate_begin" />
286 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openwaitingdateFrom" style="cursor: pointer;" />
287 <script type="text/javascript">
289 function validate1(date) {
290 var day = date.getDate();
291 var month = date.getMonth() + 1;
292 var year = date.getFullYear();
293 var weekDay = date.getDay();
294 var dayMonth = month + '-' + day;
295 var dateString = year + '-' + month + '-' + day;
296 var dateTo = document.getElementById('filter_waitingdate_end').value.split("-");
297 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
298 if (date > limitDate) {
305 inputField : "filter_waitingdate_begin",
306 ifFormat : "[% DHTMLcalendar_dateformat %]",
307 button : "openwaitingdateFrom",
308 disableFunc : validate1,
309 dateStatusFunc : validate1
313 <label for="filter_waitingdate_end">To</label> <input size="10" id="filter_waitingdate_end" name="filter_waitingdate_end" value="" type="text" />
314 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openwaitingdateTo" style="cursor: pointer;" border="0" />
315 <script type="text/javascript">
317 function validate2(date) {
318 var day = date.getDate();
319 var month = date.getMonth() + 1;
320 var year = date.getFullYear();
321 var weekDay = date.getDay();
322 var dayMonth = month + '-' + day;
323 var dateString = year + '-' + month + '-' + day;
324 var dateFrom = document.getElementById('filter_waitingdate_begin').value.split("-");
325 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
326 if (limitDate > date) {
333 inputField : "filter_waitingdate_end",
334 ifFormat : "[% DHTMLcalendar_dateformat %]",
335 button : "openwaitingdateTo",
336 disableFunc : validate2,
337 dateStatusFunc : validate2
344 <td>Cancellation Date</td>
345 <td><input type="radio" name="Line" value="cancellationdate" /></td>
346 <td><input type="radio" name="Column" value="cancellationdate" /></td>
347 <td><label for="filter_cancellationdate_begin">From</label> <input type="text" size="10" id="filter_cancellationdate_begin" name="filter_cancellationdate_begin" />
348 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="opencancellationdateFrom" style="cursor: pointer;" />
349 <script type="text/javascript">
351 function validate1(date) {
352 var day = date.getDate();
353 var month = date.getMonth() + 1;
354 var year = date.getFullYear();
355 var weekDay = date.getDay();
356 var dayMonth = month + '-' + day;
357 var dateString = year + '-' + month + '-' + day;
358 var dateTo = document.getElementById('filter_cancellationdate_end').value.split("-");
359 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
360 if (date > limitDate) {
367 inputField : "filter_cancellationdate_begin",
368 ifFormat : "[% DHTMLcalendar_dateformat %]",
369 button : "opencancellationdateFrom",
370 disableFunc : validate1,
371 dateStatusFunc : validate1
375 <label for="filter_cancellationdate_end">To</label> <input size="10" id="filter_cancellationdate_end" name="filter_cancellationdate_end" value="" type="text" />
376 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="opencancellationdateTo" style="cursor: pointer;" border="0" />
377 <script type="text/javascript">
379 function validate2(date) {
380 var day = date.getDate();
381 var month = date.getMonth() + 1;
382 var year = date.getFullYear();
383 var weekDay = date.getDay();
384 var dayMonth = month + '-' + day;
385 var dateString = year + '-' + month + '-' + day;
386 var dateFrom = document.getElementById('filter_cancellationdate_begin').value.split("-");
387 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
388 if (limitDate > date) {
395 inputField : "filter_cancellationdate_end",
396 ifFormat : "[% DHTMLcalendar_dateformat %]",
397 button : "opencancellationdateTo",
398 disableFunc : validate2,
399 dateStatusFunc : validate2
406 <td>Patron Category</td>
407 <td><input type="radio" name="Line" value="borrowers.categorycode" /></td>
408 <td><input type="radio" name="Column" value="borrowers.categorycode" /></td>
409 <td><select name="filter_categorycode" id="borcat">
410 <option value=""> </option>
411 [% FOREACH categoryloo IN categoryloop %]
412 [% IF ( categoryloo.selected ) %]<option value="[% categoryloo.categorycode %]" selected="selected">[% categoryloo.description %]</option>[% ELSE %]<option value="[% categoryloo.categorycode %]">[% categoryloo.description %]</option>[% END %]
417 <tr class="highlight">
419 <td><input type="radio" name="Line" value="items.itype" /></td>
420 <td><input type="radio" name="Column" value="items.itype" /></td>
421 <td><select name="filter_items.itype" id="itype">
422 <option value=""> </option>
423 [% FOREACH itypeloo IN itypeloop %]
424 [% IF ( itypeloo.selected ) %]<option value="[% itypeloo.code %]" selected="selected">[% itypeloo.description %]</option>[% ELSE %]<option value="[% itypeloo.code %]">[% itypeloo.description %]</option>[% END %]
430 <td>Pickup Library</td>
431 <td><input type="radio" name="Line" value="reserves.branchcode" checked="checked" /></td>
432 <td><input type="radio" name="Column" value="reserves.branchcode" /></td>
433 <td><select name="filter_reserves.branchcode" id="resbranchcode">
434 <option value=""> </option>
435 [% FOREACH branchloo IN branchloop %]
436 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
441 <tr class="highlight">
442 <td>Holding Library</td>
443 <td><input type="radio" name="Line" value="holdingbranch" /></td>
444 <td><input type="radio" name="Column" value="holdingbranch" /></td>
445 <td><select name="filter_holdingbranch" id="holdingbranch">
446 <option value=""> </option>
447 [% FOREACH branchloo IN branchloop %]
448 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
454 <td>Home Library</td>
455 <td><input type="radio" name="Line" value="homebranch" /></td>
456 <td><input type="radio" name="Column" value="homebranch" /></td>
457 <td><select name="filter_homebranch" id="homebranch">
458 <option value=""> </option>
459 [% FOREACH branchloo IN branchloop %]
460 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
465 <tr class="highlight">
467 <td><input type="radio" name="Line" value="items.ccode" /></td>
468 <td><input type="radio" name="Column" value="items.ccode" /></td>
469 <td><select name="filter_items.ccode" id="ccode">
470 <option value=""> </option>
471 [% FOREACH ccodeloo IN ccodeloop %]
472 [% IF ( ccodeloo.selected ) %] <option value="[% ccodeloo.code %]" selected="selected">[% ccodeloo.description %]</option>[% ELSE %]<option value="[% ccodeloo.code %]">[% ccodeloo.description %]</option>[% END %]
478 <td>Shelving Location</td>
479 <td><input type="radio" name="Line" value="items.location" /></td>
480 <td><input type="radio" name="Column" value="items.location" /></td>
481 <td><select name="filter_items.location" id="location">
482 <option value=""> </option>
483 [% FOREACH locationloo IN locationloop %]
484 [% IF ( locationloo.selected ) %]<option value="[% locationloo.code %]" selected="selected">[% locationloo.description %]</option>[% ELSE %]<option value="[% locationloo.code %]">[% locationloo.description %]</option>[% END %]
489 <tr class="highlight">
490 <td>Item Call Number</td>
493 <td>From <input type="text" name="filter_itemcallnumber" size="10" /> (inclusive) to <input type="text" name="fiter_itemcallnumber" size="10" /> (exclusive) </td>
495 [% IF ( hassort1 ) %]
496 <tr><td>Patron sort1</td>
497 <td><input type="radio" name="Line" value="borrowers.sort1" /></td>
498 <td><input type="radio" name="Column" value="borrowers.sort1" /></td>
499 <td><select name="filter_borrowers.sort1" id="sort1">
500 <option value=""> </option>
501 [% FOREACH Bsort IN Bsort1 %]
502 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value %]" selected="selected">[% Bsort.lib %]</option>[% ELSE %]<option value="[% Bsort.authorised_value %]" >[% Bsort.lib %]</option>[% END %]
508 [% IF ( hassort2 ) %]
509 <tr class="highlight"><td>Patron sort2</td>
510 <td><input type="radio" name="Line" value="borrowers.sort2" /></td>
511 <td><input type="radio" name="Column" value="borrowers.sort2" /></td>
512 <td><select name="filter_borrowers.sort2" id="sort2">
513 <option value=""> </option>
514 [% FOREACH Bsort IN Bsort2 %]
515 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value %]" selected="selected">[% Bsort.lib %]</option>[% ELSE %]<option value="[% Bsort.authorised_value %]" >[% Bsort.lib %]</option>[% END %]
522 </table><br /></fieldset>
524 <fieldset class="rows"><legend>Cell value </legend><ol><li><label for="cellvalue1">Count holds</label> <input type="radio" name="Cellvalue" value="1" id="cellvalue1" checked="checked" /> </li>
525 <li><label for="cellvalue2">Count unique borrowers</label> <input type="radio" name="Cellvalue" value="2" id="cellvalue2" /> </li><li><label for="cellvalue3">Count unique items</label> <input type="radio" name="Cellvalue" id="cellvalue3" value="3" /> </li><li><label for="cellvalue4">Count unique biblios</label> <input type="radio" name="Cellvalue" id="cellvalue4" value="4" /> </li></ol></fieldset>
527 <fieldset class="rows">
528 <legend>Output</legend>
529 <ol><li><label for="outputscreen">To screen into the browser: </label><input type="radio" checked="checked" name="output" id="outputscreen" value="screen" /> </li>
530 <li><label for="outputfile">To a file:</label> <input type="radio" name="output" value="file" id="outputfile" /> <label class="inline" for="basename">Named: </label><input type="text" name="basename" id="basename" value="Export" /> <label class="inline" for="MIME">Into an application
531 </label>[% CGIextChoice %]
532 [% CGIsepChoice %]</li></ol>
535 <fieldset class="action">
536 <input type="submit" value="Submit" />
537 <input type="hidden" name="report_name" value="[% report_name %]" />
538 <input type="hidden" name="do_it" value="1" />
546 [% INCLUDE 'reports-menu.inc' %]
549 [% INCLUDE 'intranet-bottom.inc' %]