From 6215f9a0e17444d3178b85cfcc1df33fd4644e8f Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 8 Jun 2022 17:26:43 -0300 Subject: [PATCH] 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 Signed-off-by: Lucas Gass Signed-off-by: Tomas Cohen Arazi --- .../opac-tmpl/bootstrap/en/includes/holds-table.inc | 11 ++++++++++- opac/opac-modrequest.pl | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc index 70b6901034..5daded0745 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc @@ -82,7 +82,16 @@ [% UNLESS( singleBranchMode) %] Pick up location: - [% HOLD.branch.branchname | html %] + [% IF Koha.Preference('OPACInTransitHoldPickupLocationChange') && HOLD.is_in_transit %] +
+ + +
+ [% ELSE %] + [% HOLD.branch.branchname | html %] + [% END %] [% END %] [% IF ( showpriority ) %] diff --git a/opac/opac-modrequest.pl b/opac/opac-modrequest.pl index 5d83ea3f97..c12ac95d24 100755 --- a/opac/opac-modrequest.pl +++ b/opac/opac-modrequest.pl @@ -41,6 +41,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( my $reserve_id = $query->param('reserve_id'); my $cancellation_request = $query->param('cancellation_request'); +my $new_pickup_location = $query->param('new_pickup_location'); if ( $reserve_id && $borrowernumber ) { @@ -61,6 +62,18 @@ if ( $reserve_id && $borrowernumber ) { $hold->cancel 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"); -- 2.39.5