print "Test run only\n" unless $confirm;
print "getting auto renewals\n" if $verbose;
-my $auto_renews = Koha::Checkouts->search({ auto_renew => 1, 'patron.autorenew_checkouts' => 1 },{ join => 'patron'});
+my $auto_renews = Koha::Checkouts->search(
+ {
+ auto_renew => 1,
+ 'patron.autorenew_checkouts' => 1,
+ },
+ {
+ join => ['patron','item']
+ }
+);
print "found " . $auto_renews->count . " auto renewals\n" if $verbose;
my $renew_digest = {};
while ( my $auto_renew = $auto_renews->next ) {
print "examining item '" . $auto_renew->itemnumber . "' to auto renew\n" if $verbose;
- my ( $borrower_preferences, $wants_email, $wants_digest ) = ( undef, 0, 0 );
+ my ( $borrower_preferences, $wants_messages, $wants_digest ) = ( undef, 0, 0 );
if ( $send_notices_pref eq 'preferences' ){
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences(
{
message_name => 'auto_renewals'
}
);
- $wants_email = 1
+ $wants_messages = 1
if $borrower_preferences
- && $borrower_preferences->{transports}
- && $borrower_preferences->{transports}->{email};
+ && $borrower_preferences->{transports};
$wants_digest = 1
- if $wants_email
+ if $wants_messages
&& $borrower_preferences->{wants_digest};
} else { # Preference is never or cron
- $wants_email = $send_notices;
+ $wants_messages = $send_notices;
$wants_digest = 0;
}
$auto_renew->auto_renew_error(undef)->store;
}
push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
- if ( $wants_email ) && !$wants_digest;
+ if ( $wants_messages ) && !$wants_digest;
} elsif ( $error eq 'too_many'
or $error eq 'on_reserve'
or $error eq 'restriction'
if ( $updated ) {
$auto_renew->auto_renew_error($error)->store if $confirm;
push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
- if $error ne 'auto_too_soon' && ( $wants_email && !$wants_digest ); # Do not notify if it's too soon
+ if $error ne 'auto_too_soon' && ( $wants_messages && !$wants_digest ); # Do not notify if it's too soon
}
}
if ( $send_notices && $confirm ) {
for my $borrowernumber ( keys %report ) {
my $patron = Koha::Patrons->find($borrowernumber);
- for my $issue ( @{ $report{$borrowernumber} } ) {
- my $item = Koha::Items->find( $issue->itemnumber );
- my $letter = C4::Letters::GetPreparedLetter(
- module => 'circulation',
- letter_code => 'AUTO_RENEWALS',
- tables => {
- borrowers => $patron->borrowernumber,
- issues => $issue->itemnumber,
- items => $issue->itemnumber,
- biblio => $item->biblionumber,
- },
- lang => $patron->lang,
+ my $borrower_preferences =
+ C4::Members::Messaging::GetMessagingPreferences(
+ {
+ borrowernumber => $borrowernumber,
+ message_name => 'auto_renewals'
+ }
);
+ for my $issue ( @{ $report{$borrowernumber} } ) {
+ my $item = $issue->item;
+ # Force sending of email and only email if pref is set to "cron"
+ my @transports = $send_notices_pref eq 'preferences' ? keys %{ $borrower_preferences->{'transports'} } : 'sms';
+ foreach my $transport ( @transports ) {
+ my $letter = C4::Letters::GetPreparedLetter (
+ module => 'circulation',
+ letter_code => 'AUTO_RENEWALS',
+ tables => {
+ borrowers => $patron->borrowernumber,
+ issues => $issue->itemnumber,
+ items => $issue->itemnumber,
+ biblio => $item->biblionumber,
+ },
+ lang => $patron->lang,
+ message_transport_type => $transport,
+ );
- my $library = Koha::Libraries->find( $patron->branchcode );
- my $admin_email_address = $library->from_email_address;
-
- C4::Letters::EnqueueLetter(
- { letter => $letter,
- borrowernumber => $borrowernumber,
- message_transport_type => 'email',
- from_address => $admin_email_address,
+ if ($letter) {
+ my $library = $patron->library;
+ my $admin_email_address = $library->from_email_address;
+
+ C4::Letters::EnqueueLetter(
+ {
+ letter => $letter,
+ borrowernumber => $borrowernumber,
+ from_address => $admin_email_address,
+ message_transport_type => $transport
+ }
+ );
}
- );
+ }
}
}