From ffeac24d8e198d7a22551fa4e6fa5ecf96e29b92 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 --- 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 0ae2836e7b..4ba25f9cf4 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.34.1