From 335377042b39c7af9ce791af5dfb694496170dc9 Mon Sep 17 00:00:00 2001 From: Janusz Kaczmarek Date: Mon, 13 Mar 2023 15:06:52 +0100 Subject: [PATCH] Bug 33210: (Bug 31963 follow-up) No hold fee message on OPAC should be displayed when there is no fee After resolving Bug 31963 everything works as expected when there is hold fee defined (!= 0). But in case when the fee for given patron category is set to 0.00, the user will always see the message "You will be charged a hold fee of 0,00 ...", which is obviously not intended. This is because categories.reservefee is returned from database as '0.000000' and as such, without type casting, is interpreted as string in Perl. Prior to Bug 31963 the result was compared to 0 before sending anything to the template, so the casting was done, now it is not. To test: ======== 1. Go to Administration -> Patron categories 2. Edit your patron category and give a hold fee of 0. 3. HoldFeeMode does not matter - you can set it to any value. 4. In another tab, open the OPAC. 5. Search the OPAC for any record with an item. 6. Go to place a hold on this record. You will see "You will be charged a hold fee of 0,00" --> This is a bug. 7. Apply patch and restart services. 6. Repeat step 6. 8. You should NOT see the hold fee message. Signed-off-by: David Nind Signed-off-by: Nick Signed-off-by: Tomas Cohen Arazi (cherry picked from commit e4b94e4d82d5f96a0b1125f41fc8e41a47826627) Signed-off-by: Martin Renvoize (cherry picked from commit 56f4586290e32dc4acccf32a7ab9c4a4928f0233) Signed-off-by: Lucas Gass --- C4/Reserves.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 9a1a7fc758..574217c301 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -768,6 +768,7 @@ SELECT COUNT(*) FROM reserves WHERE biblionumber=? AND borrowernumber<>? my $dbh = C4::Context->dbh; my ( $fee ) = $dbh->selectrow_array( $borquery, undef, ($borrowernumber) ); + $fee += 0; my $hold_fee_mode = C4::Context->preference('HoldFeeMode') || 'not_always'; if( $fee and $fee > 0 and $hold_fee_mode eq 'not_always' ) { # This is a reconstruction of the old code: -- 2.39.5