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:
parent
40fc2a99c1
commit
ea92a92f53
4 changed files with 61 additions and 15 deletions
|
@ -938,7 +938,12 @@ sub CanBookBeIssued {
|
|||
$item->{'itemnumber'}
|
||||
);
|
||||
if ( $CanBookBeRenewed == 0 ) { # no more renewals allowed
|
||||
$issuingimpossible{NO_MORE_RENEWALS} = 1;
|
||||
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 )
|
||||
|
|
|
@ -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,20 +341,18 @@ $(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' ";
|
||||
if ( oObj.date_due_overdue && can_renew ) {
|
||||
content += "checked='checked' ";
|
||||
}
|
||||
content += "class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>"
|
||||
+ "</span>";
|
||||
|
||||
content += "<span class='renewals'>("
|
||||
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
|
||||
+ ")</span>";
|
||||
if ( can_renew || can_force_renew ) {
|
||||
content += "<span class='" + span_class + "' style='" + span_style + "'>"
|
||||
+ "<input type='checkbox' ";
|
||||
if ( oObj.date_due_overdue && can_renew ) {
|
||||
content += "checked='checked' ";
|
||||
}
|
||||
content += "class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>"
|
||||
+ "</span>";
|
||||
|
||||
content += "<span class='renewals'>("
|
||||
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
|
||||
+ ")</span>";
|
||||
}
|
||||
|
||||
content += "</span>";
|
||||
|
|
|
@ -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 %]
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue