Bug 14470: Do not allow renew for on-site checkouts

At the opac, the renew checkbox should not be displayed if it's an
on-site checkout (same on the intranet).

On the way, this patch adds a specific message to the intranet if the
librarian try to renew an on-site checkout.
Indeed before this patch a renew was allowed if the barcode was scanned.

Test plan:
1/ Create an on-site checkout for a patron
2/ Confirm that the checkbox 'renew' is not displayed on the checkout
list tables
3/ At the OPAC, the renew should not be allowed (no checkbox)
4/ Try to check the item out to the same patron, confirm that you get a
specifig message to inform you the renew is not allowed for on-site
checkouts.

Signed-off-by: Mirko Tietgen <mirko@abunchofthings.net>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Changed 'issue' to 'item' in the error message.
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Jonathan Druart 2015-08-04 10:38:29 +01:00 committed by Tomas Cohen Arazi
parent 40fc2a99c1
commit ea92a92f53
4 changed files with 61 additions and 15 deletions

View file

@ -938,8 +938,13 @@ sub CanBookBeIssued {
$item->{'itemnumber'}
);
if ( $CanBookBeRenewed == 0 ) { # no more renewals allowed
if ( $renewerror eq 'onsite_checkout' ) {
$issuingimpossible{NO_RENEWAL_FOR_ONSITE_CHECKOUTS} = 1;
}
else {
$issuingimpossible{NO_MORE_RENEWALS} = 1;
}
}
else {
$needsconfirmation{RENEW_ISSUE} = 1;
}
@ -2667,6 +2672,7 @@ sub CanBookBeRenewed {
my $item = GetItem($itemnumber) or return ( 0, 'no_item' );
my $itemissue = GetItemIssue($itemnumber) or return ( 0, 'no_checkout' );
return ( 0, 'onsite_checkout' ) if $itemissue->{onsite_checkout};
$borrowernumber ||= $itemissue->{borrowernumber};
my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )

View file

@ -328,6 +328,8 @@ $(document).ready(function() {
span_style = "display: none";
span_class = "renewals-allowed";
} else if ( oObj.can_renew_error == "onsite_checkout" ) {
// Don't display something if it's an onsite checkout
} else {
content += "<span class='renewals-disabled'>"
+ oObj.can_renew_error
@ -339,7 +341,6 @@ $(document).ready(function() {
var can_force_renew = ( oObj.onsite_checkout == 0 ) && ( oObj.can_renew_error != "on_reserve" );
var can_renew = ( oObj.renewals_remaining > 0 && !oObj.can_renew_error );
if ( oObj.onsite_checkout == 0 ) {
if ( can_renew || can_force_renew ) {
content += "<span class='" + span_class + "' style='" + span_style + "'>"
+ "<input type='checkbox' ";
@ -353,7 +354,6 @@ $(document).ready(function() {
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
+ ")</span>";
}
}
content += "</span>";

View file

@ -481,6 +481,10 @@ $(document).ready(function() {
<li>No more renewals possible</li>
[% END %]
[% IF NO_RENEWAL_FOR_ONSITE_CHECKOUTS %]
<li>This item can not be renewed, it's an on-site checkout</li>
[% END %]
[%IF ( AGE_RESTRICTION ) %]
<li>Age restriction [% AGE_RESTRICTION %].</li>
[% END %]

View file

@ -27,7 +27,7 @@ use C4::Overdues qw(UpdateFine);
use Koha::DateUtils;
use Koha::Database;
use Test::More tests => 67;
use Test::More tests => 69;
BEGIN {
use_ok('C4::Circulation');
@ -685,5 +685,41 @@ C4::Context->dbh->do("DELETE FROM accountlines");
is( $renewokay, 0, 'Bug 14337 - Verify the borrower can not renew with a hold on the record if AllowRenewalIfOtherItemsAvailable is enabled but the only available item is notforloan' );
}
{
# Don't allow renewing onsite checkout
my $barcode = 'R00000XXX';
my $branch = 'CPL';
#Create another record
my $biblio = MARC::Record->new();
$biblio->append_fields(
MARC::Field->new('100', ' ', ' ', a => 'Anonymous'),
MARC::Field->new('245', ' ', ' ', a => 'A title'),
);
my ($biblionumber, $biblioitemnumber) = AddBiblio($biblio, '');
my (undef, undef, $itemnumber) = AddItem(
{
homebranch => $branch,
holdingbranch => $branch,
barcode => $barcode,
},
$biblionumber
);
my $borrowernumber = AddMember(
firstname => 'fn',
surname => 'dn',
categorycode => 'S',
branchcode => $branch,
);
my $borrower = GetMember( borrowernumber => $borrowernumber );
my $issue = AddIssue( $borrower, $barcode, undef, undef, undef, undef, { onsite_checkout => 1 } );
my ( $renewed, $error ) = CanBookBeRenewed( $borrowernumber, $itemnumber );
is( $renewed, 0, 'CanBookBeRenewed should not allow to renew on-site checkout' );
is( $error, 'onsite_checkout', 'A correct error code should be returned by CanBookBeRenewed for on-site checkout' );
}
$schema->storage->txn_rollback();
1;