From fe08a0ef97ad2fbab72b857d61bec364fd93d9e9 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 25 Dec 2013 17:44:19 +0000 Subject: [PATCH] Bug 11445: avoid sending duplicate hold waiting notifications This patch fixes a problem where a patron could receive duplicate hold waiting notifications. For example, this could happen if a circ operator checked in an item more than once and confirmed the same hold each time. To test: [1] Set up a test patron that received hold waiting notifications. [2] Put an item on hold for the patron, then check the item in and confirm the hold. Verify that a hold notification is sent (or inspect the message_queue table). [3] Check the item in again and confirm the hold again. A duplicate hold notification will be generated. [4] Apply the patch. [5] Repeat steps 2 and 3. This time, only one notification should be generated. [6] Verify that prove -v t/db_dependent/Reserves.t passes. Signed-off-by: Galen Charlton Signed-off-by: Chris Cormack Signed-off-by: Katrin Fischer Passes all tests and QA script. Works as described. Signed-off-by: Galen Charlton --- C4/Reserves.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index d1bca259a2..8d83e876f6 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1257,7 +1257,12 @@ sub ModReserveAffect { # get request - need to find out if item is already # waiting in order to not send duplicate hold filled notifications - my $request = GetReserveInfo($borrowernumber, $biblionumber); + my $reserve_id = GetReserveId({ + borrowernumber => $borrowernumber, + biblionumber => $biblionumber, + }); + return unless defined $reserve_id; + my $request = GetReserveInfo($reserve_id); my $already_on_shelf = ($request && $request->{found} eq 'W') ? 1 : 0; # If we affect a reserve that has to be transfered, don't set to Waiting -- 2.39.5