From e1b384d5024b5930e31822b248802168e9fed4fe Mon Sep 17 00:00:00 2001 From: Emmi Takkinen Date: Fri, 12 Dec 2025 12:58:22 +0200 Subject: [PATCH] Bug 41438: Do not always unsuspend holds when using batch modify holds tool If one modifies suspended holds e.g. changes their pickup library, holds are unsuspended. This happens due error in logic of checking if "Suspend holds" selection is empty. This patch fixes this by moving the if statement for checking new suspended status before doing anything else for the value. To reproduce: 1. Navigate to Tools->Batch modify holds. 2. Search suspended holds. 3. Select a hold to modify and change it's pickup library, but leave "Suspend holds" selection empty. 4. Press "Modify holds". => Note that hold is now unsuspended. 5. Apply this patch, start services again if needed. 6. Repeat steps from 2. to 4. => Note that hold is not suspended. => Confirm that suspending and unsuspending with and without suspend date still works as expected. Sponsored-by: Koha-Suomi Oy Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize --- tools/batch_modify_holds.pl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tools/batch_modify_holds.pl b/tools/batch_modify_holds.pl index 0ae2836e7b6..4ba25f9cf40 100755 --- a/tools/batch_modify_holds.pl +++ b/tools/batch_modify_holds.pl @@ -74,19 +74,21 @@ if ( $op eq 'cud-form' ) { $hold->branchcode($new_pickup_loc)->store; } - if ( $new_suspend_status && $new_suspend_status ne "" && !$hold->is_found ) { - $hold->suspend(1)->store; - if ($new_suspend_date) { + if ( $new_suspend_status ne "" ) { + if ( $new_suspend_status && !$hold->is_found ) { + $hold->suspend(1)->store; + if ($new_suspend_date) { + $hold->suspend_until($new_suspend_date)->store; + } else { + $hold->suspend_until(undef)->store; + } + } elsif ( !$new_suspend_status && $new_suspend_date ) { + $hold->suspend(1)->store; $hold->suspend_until($new_suspend_date)->store; } else { + $hold->suspend(0)->store; $hold->suspend_until(undef)->store; } - } elsif ( !$new_suspend_status && $new_suspend_date ) { - $hold->suspend(1)->store; - $hold->suspend_until($new_suspend_date)->store; - } else { - $hold->suspend(0)->store; - $hold->suspend_until(undef)->store; } if ($new_hold_note) { -- 2.52.0