From 5c7bee6c4b924ee2d169b7e9b3045701b63e425a Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 17 May 2017 12:54:44 -0400 Subject: [PATCH] Bug 18478 - Some notices sent via SMS gateway fail It seems that for HOLD and DUE (and maybe more) notices we rely on C4::Letters::SendQueuedMessages to populate the correct address. This patch adjust that subroutine to correctly populate the field and/or fail messages if no SMS provider available To test: 1 - Define a messaging prefs for a patron to recieve hold notices via SMS 2 - Ensure you have defined an SMS message for 'HOLD' letter 3 - Set an SMS alert number for patron 4 - Set the SMS::Send driver to 'Email' 5 - Fill a hold for the patron 6 - Check the db and note the address is null 7 - run process_message_queue.pl 8 - Check db - address is null and message pending 9 - Apply patch 10 - run process_message_queue 11 - Message to_address should be populated and message sent Signed-off-by: Marcel de Rooy Signed-off-by: Kyle M Hall (cherry picked from commit 4fa3df9462eaa4a6a2399af4d7036d2f3ee990ce) Signed-off-by: Katrin Fischer --- C4/Letters.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/C4/Letters.pm b/C4/Letters.pm index 86a2e55b2d..c53c63e4ff 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1049,9 +1049,17 @@ sub SendQueuedMessages { my $sms_provider = Koha::SMS::Providers->find( $member->{'sms_provider_id'} ); unless ( $sms_provider ) { warn sprintf( "Patron %s has no sms provider id set!", $message->{'borrowernumber'} ) if $params->{'verbose'} or $debug; + _set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } ); + next MESSAGE; + } + $message->{to_address} = $message->{to_address} ? $message->{to_address} : $member->{'smsalertnumber'}; + unless ( $message->{to_address} && $member->{'smsalertnumber'} ) { + _set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } ); + warn sprintf( "No smsalertnumber found for patron %s!", $message->{'borrowernumber'} ) if $params->{'verbose'} or $debug; next MESSAGE; } $message->{to_address} .= '@' . $sms_provider->domain(); + _update_message_to_address($message->{'message_id'},$message->{to_address}); _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} ); } else { _send_message_by_sms( $message ); -- 2.39.5