@@ -, +, @@ - apply the patch and execute the update database entry. - verify that yours previous HOLD_PHONE and HOLD_PRINT are displayed when editing the HOLD notice (under phone and print). - choose a patron and check sms, email, phone for "Hold filled" (on the patron messaging preferences). - place a hold. - check the item in and confirm the hold. - if the patron has an email *and* a sms number, 2 new messages are put into the sql message_queue table: 1 sms and 1 email. if the patron does not have 1 of them, there are 2 new messages: 1 sms/email and 1 print. if the user has neither of them, there is 1 new message: 1 print. - the generated messages should correspond with the notices defined, depending the message transport type. --- C4/Reserves.pm | 58 +++++++--------------- installer/data/mysql/updatedatabase.pl | 20 ++++++++ .../prog/en/modules/help/tools/letter.tt | 8 +-- .../thirdparty/TalkingTech_itiva_outbound.pl | 5 +- 4 files changed, 41 insertions(+), 50 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1860,15 +1860,11 @@ sub _koha_notify_reserve { # Try to get the borrower's email address my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber); - - my $letter_code; - my $print_mode = 0; - my $messagingprefs; - if ( $to_address || $borrower->{'smsalertnumber'} ) { - $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber, message_name => 'Hold_Filled' } ); - } else { - $print_mode = 1; - } + + my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( { + borrowernumber => $borrowernumber, + message_name => 'Hold_Filled' + } ); my $sth = $dbh->prepare(" SELECT * @@ -1895,43 +1891,23 @@ sub _koha_notify_reserve { substitute => { today => C4::Dates->new()->output() }, ); - - if ( $print_mode ) { - $letter_params{ 'letter_code' } = 'HOLD_PRINT'; - my $letter = C4::Letters::GetPreparedLetter ( %letter_params ) or die "Could not find a letter called '$letter_params{'letter_code'}' in the 'reserves' module"; + my $print_sent = 0; + while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) { + if ( ($mtt eq 'email' and not $to_address) or ($mtt eq 'sms' and not $borrower->{smsalertnumber}) ) { + # email or sms is requested but not exist, do a print. + $mtt = 'print'; + } + $letter_params{letter_code} = $letter_code; + $letter_params{message_transport_type} = $mtt; + my $letter = C4::Letters::GetPreparedLetter ( %letter_params ) + or die "Could not find a letter called '$letter_params{'letter_code'}' in the 'reserves' module"; C4::Letters::EnqueueLetter( { letter => $letter, borrowernumber => $borrowernumber, - message_transport_type => 'print', + from_address => $admin_email_address, + message_transport_type => $mtt, } ); - - return; - } - - if ( $to_address && defined $messagingprefs->{transports}->{'email'} ) { - $letter_params{ 'letter_code' } = $messagingprefs->{transports}->{'email'}; - my $letter = C4::Letters::GetPreparedLetter ( %letter_params ) or die "Could not find a letter called '$letter_params{'letter_code'}' in the 'reserves' module"; - - C4::Letters::EnqueueLetter( - { letter => $letter, - borrowernumber => $borrowernumber, - message_transport_type => 'email', - from_address => $admin_email_address, - } - ); - } - - if ( $borrower->{'smsalertnumber'} && defined $messagingprefs->{transports}->{'sms'} ) { - $letter_params{ 'letter_code' } = $messagingprefs->{transports}->{'sms'}; - my $letter = C4::Letters::GetPreparedLetter ( %letter_params ) or die "Could not find a letter called '$letter_params{'letter_code'}' in the 'reserves' module"; - - C4::Letters::EnqueueLetter( - { letter => $letter, - borrowernumber => $borrowernumber, - message_transport_type => 'sms', - } - ); } } --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -7971,6 +7971,26 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { } + + + + +$DBversion = "3.15.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + UPDATE message_transports SET letter_code='HOLD' WHERE letter_code='HOLD_PHONE' OR letter_code='HOLD_PRINT' + |); + $dbh->do(q| + UPDATE letter SET code='HOLD', message_transport_type='print' WHERE code='HOLD_PRINT' + |); + $dbh->do(q| + UPDATE letter SET code='HOLD', message_transport_type='phone' WHERE code='HOLD_PHONE' + |); + print "Upgrade to $DBversion done (Bug 10845: Multi transport types for holds)\n"; + SetVersion($DBversion); +} + + =head1 FUNCTIONS =head2 TableExists($table) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/help/tools/letter.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/help/tools/letter.tt @@ -100,12 +100,6 @@
  • When this notice references the branches table it is referring to the pickup library information.
  • -
  • HOLD_PRINT (Printed notice when hold available for pickup) - -
  • ODUE (Overdue Notice)