Bug 11201: Add a in-house use list pages
authorJonathan Druart <jonathan.druart@biblibre.com>
Tue, 5 Nov 2013 11:32:30 +0000 (12:32 +0100)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Tue, 31 Mar 2015 14:30:55 +0000 (11:30 -0300)
The circulation page has a new entry: a link to a list of the pending
in-house use.

Bug 10860 introduces a new way for managing in-house uses.
This patch adds a new page (from the circulation home page) to list all
pending in-house uses.

Test plan:
Go on the circulation home page and click on the in-house use link.
Verify all your in-house uses are listed and information are consistent.

Bug 11201: Display lib instead of AV code

This patch assumes that items.location is linked the the LOC
authorised values.

Signed-off-by: Nicole <nicole@bywatersolutions.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>

C4/Circulation.pm
circ/on-site_checkouts.pl [new file with mode: 0755]
koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation-home.tt
koha-tmpl/intranet-tmpl/prog/en/modules/circ/on-site_checkouts.tt [new file with mode: 0644]
t/db_dependent/Circulation/GetIssues.t

index 02c799a..135b300 100644 (file)
@@ -73,6 +73,7 @@ BEGIN {
                &barcodedecode
         &LostItem
         &ReturnLostItem
+        &GetPendingOnSiteCheckouts
        );
 
        # subs to deal with issuing a book
@@ -3910,6 +3911,36 @@ sub GetAgeRestriction {
 
 1;
 
+=head2 GetPendingOnSiteCheckouts
+
+=cut
+
+sub GetPendingOnSiteCheckouts {
+    my $dbh = C4::Context->dbh;
+    return $dbh->selectall_arrayref(q|
+        SELECT
+          items.barcode,
+          items.biblionumber,
+          items.itemnumber,
+          items.itemnotes,
+          items.itemcallnumber,
+          items.location,
+          issues.date_due,
+          issues.branchcode,
+          biblio.author,
+          biblio.title,
+          borrowers.firstname,
+          borrowers.surname,
+          borrowers.cardnumber,
+          borrowers.borrowernumber
+        FROM items
+        LEFT JOIN issues ON items.itemnumber = issues.itemnumber
+        LEFT JOIN biblio ON items.biblionumber = biblio.biblionumber
+        LEFT JOIN borrowers ON issues.borrowernumber = borrowers.borrowernumber
+        WHERE issues.onsite_checkout = 1
+    |, { Slice => {} } );
+}
+
 __END__
 
 =head1 AUTHOR
diff --git a/circ/on-site_checkouts.pl b/circ/on-site_checkouts.pl
new file mode 100755 (executable)
index 0000000..2ae52f7
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+# This file is part of Koha.
+#
+# Copyright (C) 2013 BibLibre
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
+
+use Modern::Perl;
+
+use C4::Auth;
+use C4::Circulation qw( GetPendingOnSiteCheckouts );
+use C4::Output;
+
+my $cgi = new CGI;
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "circ/on-site_checkouts.tt",
+        query           => $cgi,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired => {circulate => "circulate_remaining_permissions"},
+    }
+);
+
+my $pending_onsite_checkouts = C4::Circulation::GetPendingOnSiteCheckouts();
+
+$template->param(
+    pending_onsite_checkouts => $pending_onsite_checkouts,
+);
+
+output_html_with_http_headers $cgi, $cookie, $template->output;
index e5eaddc..af67379 100644 (file)
@@ -46,6 +46,7 @@
        systems with large numbers of overdue items.</li>[% END %]
        <li>    <a href="/cgi-bin/koha/circ/branchoverdues.pl">Overdues with fines</a> - Limited to your library.  See report help for other details.</li>
 <!--   <li>    <a href="/cgi-bin/koha/circ/stats.pl?time=yesterday">Daily reconciliation</a></li> -->
+    <li><a href="/cgi-bin/koha/circ/on-site_checkouts.pl">On-site checkout list</a></li>
 </ul>
        
        </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/on-site_checkouts.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/on-site_checkouts.tt
new file mode 100644 (file)
index 0000000..cb67007
--- /dev/null
@@ -0,0 +1,81 @@
+[% USE Branches %]
+[% USE KohaDates %]
+[% USE AuthorisedValues %]
+[% INCLUDE 'doc-head-open.inc' %]
+<title>Koha &rsaquo; Circulation &rsaquo; On-site checkouts</title>
+[% INCLUDE 'doc-head-close.inc' %]
+<link rel="stylesheet" href="[% themelang %]/css/datatables.css" />
+[% INCLUDE 'datatables.inc' %]
+<script type="text/javascript">
+//<![CDATA[
+
+$(document).ready(function(){
+  if ( $("#pending_onsite_checkout").length ) {
+    $("#pending_onsite_checkout").dataTable($.extend(true, {}, dataTablesDefaults, {
+        "aLengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],
+        "aoColumns": [
+            { "sType": "title-string" },
+            { "sType": "html" },
+            { "sType": "html" },
+            null,
+            { "sType": "html" },
+            null,
+            null,
+        ],
+        'bAutoWidth': false,
+        "sPaginationType": "four_button"
+    }));
+  }
+});
+//]]>
+</script>
+
+</head>
+<body id="circ_stats" class="circ">
+[% INCLUDE 'header.inc' %]
+[% INCLUDE 'circ-search.inc' %]
+
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a>  &rsaquo; On-site checkouts</div>
+
+<div id="doc3" class="yui-t2">
+  <div id="bd">
+    <div id="yui-main">
+      <div class="yui-b">
+        <h4>Pending on-site checkout list</h4>
+        [% IF pending_onsite_checkouts %]
+          <table id="pending_onsite_checkout">
+            <thead>
+              <tr>
+                <th>Date</th><th>Patron</th><th>Title</th><th>Callnumber</th><th>Barcode</th><th>Library</th><th>Location</th>
+              </tr>
+            </thead>
+            <tbody>
+              [% FOREACH item IN pending_onsite_checkouts %]
+                <tr>
+                  <td><span title="[% item.date_due %]">[% item.date_due | $KohaDates %]</span></td>
+                  <td>
+                    <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.borrowernumber %]">[%item.firstname %] [% item.surname %]</a>
+                  </td>
+                  <td>
+                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item.biblionumber %]"><strong>[% item.title |html %]</strong></a>[% IF ( item.author ) %], by [% item.author %][% END %][% IF ( item.itemnotes ) %]- <span class="circ-hlt">[% item.itemnotes %]</span>[% END %]
+                  </td>
+                  <td>[% item.itemcallnumber %]</td>
+                  <td>
+                    <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% item.biblionumber %]&amp;itemnumber=[% item.itemnumber %]#item[% item.itemnumber %]">[% item.barcode %]</a>
+                  </td>
+                  <td>[% Branches.GetName(item.branchcode) %]</td>
+                  <td>[% AuthorisedValues.GetByCode( 'LOC', item.location )%]</td>
+                </tr>
+              [% END %]
+            </tbody>
+          </table>
+        [% ELSE %]
+          <h3>No pending on-site checkout.</h3>
+        [% END %]
+      </div>
+    </div>
+    <div class="yui-b">
+      [% INCLUDE 'circ-menu.inc' %]
+    </div>
+  </div>
+[% INCLUDE 'intranet-bottom.inc' %]
index e308dbe..ddd5186 100644 (file)
@@ -2,7 +2,7 @@
 
 use Modern::Perl;
 
-use Test::More;
+use Test::More tests => 10;
 use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
@@ -16,6 +16,8 @@ my $dbh = C4::Context->dbh;
 $dbh->{AutoCommit} = 0;
 $dbh->{RaiseError} = 1;
 
+$dbh->do(q|DELETE FROM issues|);
+
 my $branchcode;
 my $branch_created;
 my @branches = keys %{ GetBranches() };
@@ -82,4 +84,10 @@ is(scalar @$issues, 1, "The other is an item from biblio $biblionumber2");
 $issues = C4::Circulation::GetIssues({itemnumber => $itemnumber2});
 is(scalar @$issues, 0, "No one has issued the second item of biblio $biblionumber2");
 
-done_testing;
+my $onsite_checkouts = GetPendingOnSiteCheckouts;
+is( scalar @$onsite_checkouts, 0, "No pending on-site checkouts" );
+
+my $itemnumber4 = AddItem({ barcode => '0104', %item_branch_infos }, $biblionumber1);
+AddIssue( $borrower, '0104', undef, undef, undef, undef, { onsite_checkout => 1 } );
+$onsite_checkouts = GetPendingOnSiteCheckouts;
+is( scalar @$onsite_checkouts, 1, "There is 1 pending on-site checkout" );