Koha/svc/checkin
Aleisha Amohia 0159908ca1 Bug 14224: Allow patron notes about item shown at check in
This patch adds a "Note" input field to checked out items in the "your summary"
section. The field allows patrons to write notes about the item checked out,
such as "this DVD is scratched", "the binding was torn", etc. The note will be
emailed to the library and displayed on item check in.

Patch adds two fields to the "issues" table - "note" and "notedate".
Patch adds syspref "AllowIssueNotes" - default off.

Test Plan:
1) Apply this patch
2) Update database
3) Rebuild schema
4) Turn on 'AllowIssueNote' syspref
5) Check out three different items to a borrower (may be easiest to check
    out to yourself)
6) Log in as that borrower (or yourself) on the OPAC side and go to your
summary
7) Confirm text field shows under Note column for all checkouts. Set a
note for each issue, confirm all save.
8) Check the message_queue in mysql for the entries for ALL THREE issue
notes.
9) Disable javascript in your browser
10) Refresh your summary page. Confirm that you can no longer edit the
notes in the text field. Click the 'Create/edit note' button and confirm
you are redirected to a new page.
11) Confirm that the correct title and author show for the note button
you clicked.
12) Set the note and click Submit -> confirm you are redirected
back to summary page and note is saved
13) Confirm there is a new entry in message_queue
14) Enable javascript and go back to the your checkouts page in the
staff client for the borrower you issued the items to
15) Check in TWO items
16) Confirm that the issue notes show under the "Date due" column for
the two items you checked in, and are accurate to the item (i.e. the
right issue note under the right item)
17) Go to circ/returns.pl and check in the final item using the barcode.
Confirm the issue note shows and the date is formatted correctly.

Sponsored-by: Region Halland

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

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

Signed-off-by: Marc Véron <veron@veron.ch>
2017-04-28 09:03:22 -04:00

85 lines
2.7 KiB
Perl
Executable file

#!/usr/bin/perl
# Copyright 2016 Aleisha Amohia <aleisha@catalyst.net.nz>
#
# This file is part of Koha.
#
# 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, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use Modern::Perl;
use CGI;
use JSON qw(to_json);
use C4::Circulation;
use C4::Items qw(GetBarcodeFromItemnumber GetItem ModItem);
use C4::Context;
use C4::Auth qw(check_cookie_auth);
my $input = new CGI;
my ( $auth_status, $sessionID ) =
check_cookie_auth( $input->cookie('CGISESSID'),
{ circulate => 'circulate_remaining_permissions' } );
if ( $auth_status ne "ok" ) {
exit 0;
}
binmode STDOUT, ":encoding(UTF-8)";
print $input->header( -type => 'text/plain', -charset => 'UTF-8' );
my $itemnumber = $input->param('itemnumber');
my $borrowernumber = $input->param('borrowernumber');
my $override_limit = $input->param('override_limit');
my $exempt_fine = $input->param('exempt_fine');
my $branchcode = $input->param('branchcode')
|| C4::Context->userenv->{'branch'};
# Expect these inputs to come in as JSON boolean values
$override_limit = $override_limit ? $override_limit eq 'true' : undef;
$exempt_fine = $exempt_fine ? $exempt_fine eq 'true' : undef;
my $barcode = GetBarcodeFromItemnumber($itemnumber);
my $data;
$data->{itemnumber} = $itemnumber;
$data->{borrowernumber} = $borrowernumber;
$data->{branchcode} = $branchcode;
if ( C4::Context->preference("InProcessingToShelvingCart") ) {
my $item = GetItem($itemnumber);
if ( $item->{'location'} eq 'PROC' ) {
$item->{'location'} = 'CART';
ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} );
}
}
if ( C4::Context->preference("ReturnToShelvingCart") ) {
my $item = GetItem($itemnumber);
$item->{'location'} = 'CART';
ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} );
}
my $dbh = C4::Context->dbh;
my $query = "SELECT note FROM issues WHERE itemnumber = ?";
my $sth = $dbh->prepare($query);
$sth->execute($itemnumber);
my $issue = $sth->fetchrow_hashref;
my $patronnote = $issue->{note};
$data->{patronnote} = $patronnote;
( $data->{returned} ) = AddReturn( $barcode, $branchcode, $exempt_fine );
print to_json($data);