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

(-)a/misc/cronjobs/advance_notices.pl (-59 / +88 lines)
Lines 222-234 END_SQL Link Here
222
222
223
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress');
223
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress');
224
224
225
my @letters;
225
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
226
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
226
    warn 'examining ' . $upcoming->{'itemnumber'} . ' upcoming due items' if $verbose;
227
    warn 'examining ' . $upcoming->{'itemnumber'} . ' upcoming due items' if $verbose;
227
    # warn( Data::Dumper->Dump( [ $upcoming ], [ 'overdue' ] ) );
228
    # warn( Data::Dumper->Dump( [ $upcoming ], [ 'overdue' ] ) );
228
229
229
    my $from_address = $upcoming->{branchemail} || $admin_adress;
230
    my $from_address = $upcoming->{branchemail} || $admin_adress;
230
231
231
    my $letter;
232
    my $borrower_preferences;
232
    my $borrower_preferences;
233
    if ( 0 == $upcoming->{'days_until_due'} ) {
233
    if ( 0 == $upcoming->{'days_until_due'} ) {
234
        # This item is due today. Send an 'item due' message.
234
        # This item is due today. Send an 'item due' message.
Lines 253-266 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
253
            }
253
            }
254
254
255
            ## Get branch info for borrowers home library.
255
            ## Get branch info for borrowers home library.
256
            $letter = parse_letter( { letter_code    => $letter_type,
256
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
257
                my $letter = parse_letter( { letter_code    => $letter_type,
257
                                      borrowernumber => $upcoming->{'borrowernumber'},
258
                                      borrowernumber => $upcoming->{'borrowernumber'},
258
                                      branchcode     => $upcoming->{'branchcode'},
259
                                      branchcode     => $upcoming->{'branchcode'},
259
                                      biblionumber   => $biblio->{'biblionumber'},
260
                                      biblionumber   => $biblio->{'biblionumber'},
260
                                      itemnumber     => $upcoming->{'itemnumber'},
261
                                      itemnumber     => $upcoming->{'itemnumber'},
261
                                      substitute     => { 'items.content' => $titles }
262
                                      substitute     => { 'items.content' => $titles },
263
                                      message_transport_type => $transport,
262
                                    } )
264
                                    } )
263
              or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
265
                    or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
266
                push @letters, $letter;
267
            }
264
        }
268
        }
265
    } else {
269
    } else {
266
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
270
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
Lines 285-313 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
285
            }
289
            }
286
290
287
            ## Get branch info for borrowers home library.
291
            ## Get branch info for borrowers home library.
288
            $letter = parse_letter( { letter_code    => $letter_type,
292
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
293
                my $letter = parse_letter( { letter_code    => $letter_type,
289
                                      borrowernumber => $upcoming->{'borrowernumber'},
294
                                      borrowernumber => $upcoming->{'borrowernumber'},
290
                                      branchcode     => $upcoming->{'branchcode'},
295
                                      branchcode     => $upcoming->{'branchcode'},
291
                                      biblionumber   => $biblio->{'biblionumber'},
296
                                      biblionumber   => $biblio->{'biblionumber'},
292
                                      itemnumber     => $upcoming->{'itemnumber'},
297
                                      itemnumber     => $upcoming->{'itemnumber'},
293
                                      substitute     => { 'items.content' => $titles }
298
                                      substitute     => { 'items.content' => $titles },
299
                                      message_transport_type => $transport,
294
                                    } )
300
                                    } )
295
              or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
301
                    or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
302
                push @letters, $letter;
303
            }
296
        }
304
        }
297
    }
305
    }
298
306
299
    # If we have prepared a letter, send it.
307
    # If we have prepared a letter, send it.
300
    if ($letter) {
308
    if ( @letters ) {
301
      if ($nomail) {
309
      if ($nomail) {
302
        local $, = "\f";
310
        for my $letter ( @letters ) {
303
        print $letter->{'content'};
311
            local $, = "\f";
312
            print $letter->{'content'};
313
        }
304
      }
314
      }
305
      else {
315
      else {
306
        foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
316
        for my $letter ( @letters ) {
307
            C4::Letters::EnqueueLetter( { letter                 => $letter,
317
            C4::Letters::EnqueueLetter( { letter                 => $letter,
308
                                          borrowernumber         => $upcoming->{'borrowernumber'},
318
                                          borrowernumber         => $upcoming->{'borrowernumber'},
309
                                          from_address           => $from_address,
319
                                          from_address           => $from_address,
310
                                          message_transport_type => $transport } );
320
                                          message_transport_type => $letter->{message_transport_type} } );
311
        }
321
        }
312
      }
322
      }
313
    }
323
    }
Lines 326-332 SELECT biblio.*, items.*, issues.* Link Here
326
    AND issues.borrowernumber = ?
336
    AND issues.borrowernumber = ?
327
    AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
337
    AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
328
END_SQL
338
END_SQL
329
339
@letters = ();
330
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
340
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
331
    my $count = $digest->{count};
341
    my $count = $digest->{count};
332
    my $from_address = $digest->{email};
342
    my $from_address = $digest->{email};
Lines 349-382 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
349
    ## Get branch info for borrowers home library.
359
    ## Get branch info for borrowers home library.
350
    my %branch_info = get_branch_info( $borrowernumber );
360
    my %branch_info = get_branch_info( $borrowernumber );
351
361
352
    my $letter = parse_letter(
362
    foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
353
        {
363
        my $letter = parse_letter(
354
            letter_code    => $letter_type,
364
            {
355
            borrowernumber => $borrowernumber,
365
                letter_code    => $letter_type,
356
            substitute     => {
366
                borrowernumber => $borrowernumber,
357
                count           => $count,
367
                substitute     => {
358
                'items.content' => $titles,
368
                    count           => $count,
359
                %branch_info,
369
                    'items.content' => $titles,
360
            },
370
                    %branch_info,
361
            branchcode => $branch_info{ "branches.branchcode" },
371
                },
362
        }
372
                branchcode             => $branch_info{"branches.branchcode"},
363
      )
373
                message_transport_type => $transport,
364
      or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
374
            }
365
    if ($nomail) {
375
          )
366
      local $, = "\f";
376
          or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
367
      print $letter->{'content'};
377
        push @letters, $letter;
368
    }
378
    }
369
    else {
379
370
      foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
380
    if ( @letters ) {
371
        C4::Letters::EnqueueLetter( { letter                 => $letter,
381
      if ($nomail) {
372
                                      borrowernumber         => $borrowernumber,
382
        for my $letter ( @letters ) {
373
                                      from_address           => $from_address,
383
            local $, = "\f";
374
                                      message_transport_type => $transport } );
384
            print $letter->{'content'};
385
        }
386
      }
387
      else {
388
        for my $letter ( @letters ) {
389
            C4::Letters::EnqueueLetter( { letter                 => $letter,
390
                                          borrowernumber         => $borrowernumber,
391
                                          from_address           => $from_address,
392
                                          message_transport_type => $letter->{message_transport_type} } );
393
        }
375
      }
394
      }
376
    }
395
    }
377
}
396
}
378
397
379
# Now, run through all the people that want digests and send them
398
# Now, run through all the people that want digests and send them
399
@letters = ();
380
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
400
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
381
    my $count = $digest->{count};
401
    my $count = $digest->{count};
382
    my $from_address = $digest->{email};
402
    my $from_address = $digest->{email};
Lines 397-428 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
397
    ## Get branch info for borrowers home library.
417
    ## Get branch info for borrowers home library.
398
    my %branch_info = get_branch_info( $borrowernumber );
418
    my %branch_info = get_branch_info( $borrowernumber );
399
419
400
    my $letter = parse_letter(
420
    for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
401
        {
421
        my $letter = parse_letter(
402
            letter_code    => $letter_type,
422
            {
403
            borrowernumber => $borrowernumber,
423
                letter_code    => $letter_type,
404
            substitute     => {
424
                borrowernumber => $borrowernumber,
405
                count           => $count,
425
                substitute     => {
406
                'items.content' => $titles,
426
                    count           => $count,
407
                %branch_info,
427
                    'items.content' => $titles,
408
            },
428
                    %branch_info,
409
            branchcode => $branch_info{ "branches.branchcode" },
429
                },
410
        }
430
                branchcode             => $branch_info{"branches.branchcode"},
411
      )
431
                message_transport_type => $transport,
412
      or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
432
            }
413
433
          )
414
    if ($nomail) {
434
          or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
415
      local $, = "\f";
435
        push @letters, $letter;
416
      print $letter->{'content'};
417
    }
436
    }
418
    else {
437
419
      foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
438
    if ( @letters ) {
420
        C4::Letters::EnqueueLetter( { letter                 => $letter,
439
      if ($nomail) {
421
                                      borrowernumber         => $borrowernumber,
440
        for my $letter ( @letters ) {
422
                                      from_address           => $from_address,
441
            local $, = "\f";
423
                                      message_transport_type => $transport } );
442
            print $letter->{'content'};
443
        }
444
      }
445
      else {
446
        for my $letter ( @letters ) {
447
            C4::Letters::EnqueueLetter( { letter                 => $letter,
448
                                          borrowernumber         => $borrowernumber,
449
                                          from_address           => $from_address,
450
                                          message_transport_type => $letter->{message_transport_type} } );
451
        }
424
      }
452
      }
425
    }
453
    }
454
426
}
455
}
427
456
428
=head1 METHODS
457
=head1 METHODS
Lines 457-462 sub parse_letter { Link Here
457
        branchcode => $table_params{'branches'},
486
        branchcode => $table_params{'branches'},
458
        substitute => $params->{'substitute'},
487
        substitute => $params->{'substitute'},
459
        tables     => \%table_params,
488
        tables     => \%table_params,
489
        message_transport_type => $params->{message_transport_type},
460
    );
490
    );
461
}
491
}
462
492
463
- 

Return to bug 10833