From 65bc836dce5a0270eb45019656733ca24fa3f743 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 23 Jan 2026 17:13:51 +0000 Subject: [PATCH] Bug 20844: Prevent double notices and ensure notice sent from additem.pl for additem.pl we need to mark the item as lost before we call lost item To prevent double messages we don't send a notice when cancelling or reverting an item level hold, we send on the initial mark lost --- C4/Circulation.pm | 7 ++++++- cataloguing/additem.pl | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 4f07fedb2f2..56175a8183f 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -4494,7 +4494,12 @@ sub LostItem { } # SendLostHoldNotices - if ( C4::Context->preference('SendLostHoldNotices') && defined $hold && $item->itemlost ) { + # If the reserve is being cancelled or reverted this is an item level hold an will have already been sent when item was marked lost + if ( C4::Context->preference('SendLostHoldNotices') + && defined $hold + && $item->itemlost + && !defined $params->{cancel_reserve} ) + { my $letter = C4::Letters::GetPreparedLetter( module => 'reserves', letter_code => 'LOST_WAITING_HOLD', diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 2268a8602e6..928bb94c999 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -640,13 +640,13 @@ if ( $op eq "cud-additem" ) { $current_item = $item->unblessed; # Restore edit form for the same item } else { my $newitemlost = $item->itemlost; - if ( $newitemlost && $newitemlost ge '1' && !$olditemlost ) { - LostItem( $item->itemnumber, 'additem' ); - } try { $item->store; } catch { push @errors, $_->error; + }; + if ( $newitemlost && $newitemlost ge '1' && !$olditemlost ) { + LostItem( $item->itemnumber, 'additem' ); } } -- 2.39.5