Bug 30500: Allow patrons to change in transit holds pickup locations
This patch adds a way for patrons to change the pickup location for in transit holds. This is done in the OPAC on the holds table. The feature is controlled by a new system preference: * OPACInTransitHoldPickupLocationChange To test: 1. Apply this patches 2. Run: $ updatedatabase $ restart_all => SUCCESS: system preference added 3. Have an in-transit hold for a known patron 4. Visit the holds table for the patron (OPAC) => SUCCESS: Hold in transit, cannot change pickup location 5. Enable the OPACInTransitHoldPickupLocationChange system preference => SUCCESS: Descriptive text makes sense and is idiomatic 6. Reload the OPAC page => SUCCESS: You can now choose a new pickup location 7. Choose one => SUCCESS: It works! Reloaded page pre-selects the new pickup location 8. Switch to the new pickup location library on the staff interface 9. Go to Circulation > Transfers to receive => SUCCESS: The hold is there! 10. Scan the hold => SUCCESS: Usual workflow follows 11. Sign off :-D Sponsored-by: Montgomery County Public Libraries Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
1ae7b9055a
commit
6215f9a0e1
2 changed files with 23 additions and 1 deletions
|
@ -82,7 +82,16 @@
|
||||||
[% UNLESS( singleBranchMode) %]
|
[% UNLESS( singleBranchMode) %]
|
||||||
<td class="branch">
|
<td class="branch">
|
||||||
<span class="tdlabel">Pick up location:</span>
|
<span class="tdlabel">Pick up location:</span>
|
||||||
[% HOLD.branch.branchname | html %]
|
[% IF Koha.Preference('OPACInTransitHoldPickupLocationChange') && HOLD.is_in_transit %]
|
||||||
|
<form class="form-inline" action="/cgi-bin/koha/opac-modrequest.pl" method="post">
|
||||||
|
<input type="hidden" name="reserve_id" value="[% HOLD.reserve_id | html %]" />
|
||||||
|
<select name="new_pickup_location" class="new_pickup_location" onchange="this.form.submit()">
|
||||||
|
[% PROCESS options_for_libraries libraries => Branches.pickup_locations({ search_params => { item => HOLD.itemnumber, patron => logged_in_user }, selected => HOLD.branchcode }) %]
|
||||||
|
</select>
|
||||||
|
</form>
|
||||||
|
[% ELSE %]
|
||||||
|
[% HOLD.branch.branchname | html %]
|
||||||
|
[% END %]
|
||||||
</td>
|
</td>
|
||||||
[% END %]
|
[% END %]
|
||||||
[% IF ( showpriority ) %]
|
[% IF ( showpriority ) %]
|
||||||
|
|
|
@ -41,6 +41,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
|
||||||
|
|
||||||
my $reserve_id = $query->param('reserve_id');
|
my $reserve_id = $query->param('reserve_id');
|
||||||
my $cancellation_request = $query->param('cancellation_request');
|
my $cancellation_request = $query->param('cancellation_request');
|
||||||
|
my $new_pickup_location = $query->param('new_pickup_location');
|
||||||
|
|
||||||
if ( $reserve_id && $borrowernumber ) {
|
if ( $reserve_id && $borrowernumber ) {
|
||||||
|
|
||||||
|
@ -61,6 +62,18 @@ if ( $reserve_id && $borrowernumber ) {
|
||||||
$hold->cancel
|
$hold->cancel
|
||||||
if $hold->is_cancelable_from_opac;
|
if $hold->is_cancelable_from_opac;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $new_pickup_location ) {
|
||||||
|
|
||||||
|
if ( C4::Context->preference('OPACInTransitHoldPickupLocationChange') ) {
|
||||||
|
$hold->set_pickup_location({ library_id => $new_pickup_location });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# whatcha tryin to do?
|
||||||
|
print $query->redirect('/cgi-bin/koha/errors/403.pl');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");
|
print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");
|
||||||
|
|
Loading…
Reference in a new issue