@@ -, +, @@ through SMS correctly 1 - Define a messaging prefs for a patron to recieve hold notices via SMS 2 - Ensure you have defined an SMS message for an overdue letter 3 - Set an SMS alert number for patron 4 - Set the SMS::Send driver to 'Email' 5 - Checkout an item as overdue to trigger notice above 6 - Run overdue_notices.pl 6 - Check the db and note the address is email 7 - run process_message_queue.pl 8 - Check db - address is email followed by service provider 9 - Apply patch 10 - repeat 11 - Message to_address should be populated with smsalertnumber --- C4/Letters.pm | 4 ++-- t/db_dependent/Letters.t | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) --- a/C4/Letters.pm +++ a/C4/Letters.pm @@ -1055,12 +1055,12 @@ sub SendQueuedMessages { _set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } ); next MESSAGE; } - $message->{to_address} ||= $patron->smsalertnumber; - unless ( $message->{to_address} && $patron->smsalertnumber ) { + unless ( $patron->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} = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber $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'} ); --- a/t/db_dependent/Letters.t +++ a/t/db_dependent/Letters.t @@ -632,7 +632,7 @@ subtest 'TranslateNotices' => sub { subtest 'SendQueuedMessages' => sub { - plan tests => 2; + plan tests => 3; t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' ); my $patron = Koha::Patrons->find($borrowernumber); $dbh->do(q| @@ -651,6 +651,15 @@ subtest 'SendQueuedMessages' => sub { borrowernumber => $borrowernumber, status => 'sent' })->next()->to_address(); - is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email' ); + is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' ); + $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue + $my_message->{to_address} = 'fixme@kidclamp.iswrong'; + $message_id = C4::Letters::EnqueueLetter($my_message); + C4::Letters::SendQueuedMessages(); + $sms_message_address = $schema->resultset('MessageQueue')->search({ + borrowernumber => $borrowernumber, + status => 'sent' + })->next()->to_address(); + is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address is set incorrectly' ); }; --