View | Details | Raw Unified | Return to bug 28553
Collapse All | Expand All

(-)a/misc/cronjobs/automatic_renewals.pl (-31 / +52 lines)
Lines 133-139 $verbose = 1 unless $verbose or $confirm; Link Here
133
print "Test run only\n" unless $confirm;
133
print "Test run only\n" unless $confirm;
134
134
135
print "getting auto renewals\n" if $verbose;
135
print "getting auto renewals\n" if $verbose;
136
my $auto_renews = Koha::Checkouts->search({ auto_renew => 1, 'patron.autorenew_checkouts' => 1 },{ join => 'patron'});
136
my $auto_renews = Koha::Checkouts->search(
137
    {
138
        auto_renew                   => 1,
139
        'patron.autorenew_checkouts' => 1,
140
    },
141
    {
142
        join => ['patron','item']
143
    }
144
);
137
print "found " . $auto_renews->count . " auto renewals\n" if $verbose;
145
print "found " . $auto_renews->count . " auto renewals\n" if $verbose;
138
146
139
my $renew_digest = {};
147
my $renew_digest = {};
Lines 141-147 my %report; Link Here
141
while ( my $auto_renew = $auto_renews->next ) {
149
while ( my $auto_renew = $auto_renews->next ) {
142
    print "examining item '" . $auto_renew->itemnumber . "' to auto renew\n" if $verbose;
150
    print "examining item '" . $auto_renew->itemnumber . "' to auto renew\n" if $verbose;
143
151
144
    my ( $borrower_preferences, $wants_email, $wants_digest ) = ( undef, 0, 0 );
152
    my ( $borrower_preferences, $wants_messages, $wants_digest ) = ( undef, 0, 0 );
145
    if ( $send_notices_pref eq 'preferences' ){
153
    if ( $send_notices_pref eq 'preferences' ){
146
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences(
154
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences(
147
            {
155
            {
Lines 149-163 while ( my $auto_renew = $auto_renews->next ) { Link Here
149
                message_name   => 'auto_renewals'
157
                message_name   => 'auto_renewals'
150
            }
158
            }
151
        );
159
        );
152
        $wants_email = 1
160
        $wants_messages = 1
153
            if $borrower_preferences
161
            if $borrower_preferences
154
            && $borrower_preferences->{transports}
162
            && $borrower_preferences->{transports};
155
            && $borrower_preferences->{transports}->{email};
156
        $wants_digest = 1
163
        $wants_digest = 1
157
            if $wants_email
164
            if $wants_messages
158
            && $borrower_preferences->{wants_digest};
165
            && $borrower_preferences->{wants_digest};
159
    } else { # Preference is never or cron
166
    } else { # Preference is never or cron
160
        $wants_email = $send_notices;
167
        $wants_messages = $send_notices;
161
        $wants_digest = 0;
168
        $wants_digest = 0;
162
    }
169
    }
163
170
Lines 175-181 while ( my $auto_renew = $auto_renews->next ) { Link Here
175
            $auto_renew->auto_renew_error(undef)->store;
182
            $auto_renew->auto_renew_error(undef)->store;
176
        }
183
        }
177
        push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
184
        push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
178
            if ( $wants_email ) && !$wants_digest;
185
            if ( $wants_messages ) && !$wants_digest;
179
    } elsif ( $error eq 'too_many'
186
    } elsif ( $error eq 'too_many'
180
        or $error eq 'on_reserve'
187
        or $error eq 'on_reserve'
181
        or $error eq 'restriction'
188
        or $error eq 'restriction'
Lines 194-200 while ( my $auto_renew = $auto_renews->next ) { Link Here
194
        if ( $updated ) {
201
        if ( $updated ) {
195
            $auto_renew->auto_renew_error($error)->store if $confirm;
202
            $auto_renew->auto_renew_error($error)->store if $confirm;
196
            push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
203
            push @{ $report{ $auto_renew->borrowernumber } }, $auto_renew
197
              if $error ne 'auto_too_soon' && ( $wants_email  && !$wants_digest );    # Do not notify if it's too soon
204
              if $error ne 'auto_too_soon' && ( $wants_messages  && !$wants_digest );    # Do not notify if it's too soon
198
        }
205
        }
199
    }
206
    }
200
207
Lines 218-247 while ( my $auto_renew = $auto_renews->next ) { Link Here
218
if ( $send_notices && $confirm ) {
225
if ( $send_notices && $confirm ) {
219
    for my $borrowernumber ( keys %report ) {
226
    for my $borrowernumber ( keys %report ) {
220
        my $patron = Koha::Patrons->find($borrowernumber);
227
        my $patron = Koha::Patrons->find($borrowernumber);
221
        for my $issue ( @{ $report{$borrowernumber} } ) {
228
        my $borrower_preferences =
222
            my $item   = Koha::Items->find( $issue->itemnumber );
229
            C4::Members::Messaging::GetMessagingPreferences(
223
            my $letter = C4::Letters::GetPreparedLetter(
230
                {
224
                module      => 'circulation',
231
                    borrowernumber => $borrowernumber,
225
                letter_code => 'AUTO_RENEWALS',
232
                    message_name   => 'auto_renewals'
226
                tables      => {
233
                }
227
                    borrowers => $patron->borrowernumber,
228
                    issues    => $issue->itemnumber,
229
                    items     => $issue->itemnumber,
230
                    biblio    => $item->biblionumber,
231
                },
232
                lang => $patron->lang,
233
            );
234
            );
235
        for my $issue ( @{ $report{$borrowernumber} } ) {
236
            my $item = $issue->item;
237
            # Force sending of email and only email if pref is set to "cron"
238
            my @transports = $send_notices_pref eq 'preferences' ? keys %{ $borrower_preferences->{'transports'} } : 'sms';
239
            foreach my $transport ( @transports ) {
240
                my $letter = C4::Letters::GetPreparedLetter (
241
                    module      => 'circulation',
242
                    letter_code => 'AUTO_RENEWALS',
243
                    tables      => {
244
                        borrowers => $patron->borrowernumber,
245
                        issues    => $issue->itemnumber,
246
                        items     => $issue->itemnumber,
247
                        biblio    => $item->biblionumber,
248
                    },
249
                    lang => $patron->lang,
250
                    message_transport_type => $transport,
251
                );
234
252
235
            my $library = Koha::Libraries->find( $patron->branchcode );
253
                if ($letter) {
236
            my $admin_email_address = $library->from_email_address;
254
                    my $library = $patron->library;
237
255
                    my $admin_email_address = $library->from_email_address;
238
            C4::Letters::EnqueueLetter(
256
239
                {   letter                 => $letter,
257
                    C4::Letters::EnqueueLetter(
240
                    borrowernumber         => $borrowernumber,
258
                        {
241
                    message_transport_type => 'email',
259
                            letter                 => $letter,
242
                    from_address           => $admin_email_address,
260
                            borrowernumber         => $borrowernumber,
261
                            from_address           => $admin_email_address,
262
                            message_transport_type => $transport
263
                        }
264
                    );
243
                }
265
                }
244
            );
266
            }
245
        }
267
        }
246
    }
268
    }
247
269
248
- 

Return to bug 28553