| Lines 49-54
          use C4::Log qw( cronlogaction );
      
      
        Link Here | 
        
          | 49 | use Koha::Items; | 49 | use Koha::Items; | 
        
          | 50 | use Koha::Libraries; | 50 | use Koha::Libraries; | 
        
          | 51 | use Koha::Patrons; | 51 | use Koha::Patrons; | 
            
              |  |  | 52 | use Koha::Patron::MessagePreferences; | 
        
          | 52 |  | 53 |  | 
        
          | 53 | =head1 OPTIONS | 54 | =head1 OPTIONS | 
        
          | 54 |  | 55 |  | 
  
    | Lines 267-277
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 267 |     my $borrower_preferences; | 268 |     my $borrower_preferences; | 
        
          | 268 |     if ( 0 == $upcoming->{'days_until_due'} ) { | 269 |     if ( 0 == $upcoming->{'days_until_due'} ) { | 
        
          | 269 |         # This item is due today. Send an 'item due' message. | 270 |         # This item is due today. Send an 'item due' message. | 
          
            
              | 270 |         $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, | 271 |         $borrower_preferences = Koha::Patron::MessagePreferences->find_with_message_name({ | 
            
              | 271 |                                                                                    message_name   => 'item_due' } ); | 272 |             borrowernumber => $upcoming->{'borrowernumber'}, | 
            
              |  |  | 273 |             message_name   => 'item_due', | 
            
              | 274 |         }); | 
        
          | 272 |         next unless $borrower_preferences; | 275 |         next unless $borrower_preferences; | 
        
          | 273 |          | 276 |          | 
          
            
              | 274 |         if ( $borrower_preferences->{'wants_digest'} ) { | 277 |         if ( $borrower_preferences->wants_digest ) { | 
        
          | 275 |             # cache this one to process after we've run through all of the items. | 278 |             # cache this one to process after we've run through all of the items. | 
        
          | 276 |             if ($digest_per_branch) { | 279 |             if ($digest_per_branch) { | 
        
          | 277 |                 $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 280 |                 $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 
  
    | Lines 297-303
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 297 |             my $title = C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 300 |             my $title = C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 
        
          | 298 |  | 301 |  | 
        
          | 299 |             ## Get branch info for borrowers home library. | 302 |             ## Get branch info for borrowers home library. | 
          
            
              | 300 |             foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { | 303 |             foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { | 
        
          | 301 |                 next if $transport eq 'itiva'; | 304 |                 next if $transport eq 'itiva'; | 
        
          | 302 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 305 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 
        
          | 303 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 306 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 
  
    | Lines 315-326
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 315 |             } | 318 |             } | 
        
          | 316 |         } | 319 |         } | 
        
          | 317 |     } else { | 320 |     } else { | 
          
            
              | 318 |         $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, | 321 |         $borrower_preferences = Koha::Patron::MessagePreferences->find_with_message_name({ | 
            
              | 319 |                                                                                    message_name   => 'advance_notice' } ); | 322 |             borrowernumber => $upcoming->{'borrowernumber'}, | 
            
              | 320 |         next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'}; | 323 |             message_name   => 'advance_notice', | 
            
              | 321 |         next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'}; | 324 |         }); | 
            
              |  |  | 325 |         next UPCOMINGITEM unless $borrower_preferences && defined $borrower_preferences->days_in_advance; | 
            
              | 326 |         next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'}; | 
        
          | 322 |  | 327 |  | 
          
            
              | 323 |         if ( $borrower_preferences->{'wants_digest'} ) { | 328 |         if ( $borrower_preferences->wants_digest ) { | 
        
          | 324 |             # cache this one to process after we've run through all of the items. | 329 |             # cache this one to process after we've run through all of the items. | 
        
          | 325 |             if ($digest_per_branch) { | 330 |             if ($digest_per_branch) { | 
        
          | 326 |                 $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 331 |                 $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 
  
    | Lines 341-352
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 341 |  | 346 |  | 
        
          | 342 |             my $item = Koha::Items->find( $upcoming->{itemnumber} ); | 347 |             my $item = Koha::Items->find( $upcoming->{itemnumber} ); | 
        
          | 343 |             my $letter_type = 'PREDUE'; | 348 |             my $letter_type = 'PREDUE'; | 
          
            
              | 344 |             $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'}); | 349 |             $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance); | 
        
          | 345 |             my $item_info = $sth->fetchrow_hashref(); | 350 |             my $item_info = $sth->fetchrow_hashref(); | 
        
          | 346 |             my $title = C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 351 |             my $title = C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 
        
          | 347 |  | 352 |  | 
        
          | 348 |             ## Get branch info for borrowers home library. | 353 |             ## Get branch info for borrowers home library. | 
          
            
              | 349 |             foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { | 354 |             foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { | 
        
          | 350 |                 next if $transport eq 'itiva'; | 355 |                 next if $transport eq 'itiva'; | 
        
          | 351 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 356 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 
        
          | 352 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 357 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 
  
    | Lines 408-414
          if ($digest_per_branch) {
      
      
        Link Here | 
        
          | 408 |             get_item_info => sub { | 413 |             get_item_info => sub { | 
        
          | 409 |                 my $params = shift; | 414 |                 my $params = shift; | 
        
          | 410 |                 $params->{sth}->execute($params->{borrowernumber}, | 415 |                 $params->{sth}->execute($params->{borrowernumber}, | 
          
            
              | 411 |                                         $params->{borrower_preferences}->{'days_in_advance'}); | 416 |                                         $params->{borrower_preferences}->days_in_advance); | 
        
          | 412 |                 return sub { | 417 |                 return sub { | 
        
          | 413 |                     $params->{sth}->fetchrow_hashref; | 418 |                     $params->{sth}->fetchrow_hashref; | 
        
          | 414 |                 }; | 419 |                 }; | 
  
    | Lines 441-447
          if ($digest_per_branch) {
      
      
        Link Here | 
        
          | 441 |         get_item_info => sub { | 446 |         get_item_info => sub { | 
        
          | 442 |             my $params = shift; | 447 |             my $params = shift; | 
        
          | 443 |             $params->{sth}->execute($params->{borrowernumber}, | 448 |             $params->{sth}->execute($params->{borrowernumber}, | 
          
            
              | 444 |                                     $params->{borrower_preferences}->{'days_in_advance'}); | 449 |                                     $params->{borrower_preferences}->days_in_advance); | 
        
          | 445 |             return sub { | 450 |             return sub { | 
        
          | 446 |                 $params->{sth}->fetchrow_hashref; | 451 |                 $params->{sth}->fetchrow_hashref; | 
        
          | 447 |             }; | 452 |             }; | 
  
    | Lines 578-590
          sub send_digests {
      
      
        Link Here | 
        
          | 578 |             $branchcode = $branch_info{'branches.branchcode'}; | 583 |             $branchcode = $branch_info{'branches.branchcode'}; | 
        
          | 579 |         } | 584 |         } | 
        
          | 580 |  | 585 |  | 
          
            
              | 581 |         my $borrower_preferences = | 586 |         my $borrower_preferences = Koha::Patron::MessagePreferences->find_with_message_name({ | 
            
              | 582 |             C4::Members::Messaging::GetMessagingPreferences( | 587 |             borrowernumber => $borrowernumber, | 
            
              | 583 |                 { | 588 |             message_name   => $params->{message_name}, | 
            
              | 584 |                     borrowernumber => $borrowernumber, | 589 |         }); | 
            
              | 585 |                     message_name   => $params->{message_name} |  |  | 
            
              | 586 |                 } | 
            
              | 587 |             ); | 
        
          | 588 |  | 590 |  | 
        
          | 589 |         next PATRON unless $borrower_preferences; # how could this happen? | 591 |         next PATRON unless $borrower_preferences; # how could this happen? | 
        
          | 590 |  | 592 |  | 
  
    | Lines 602-608
          sub send_digests {
      
      
        Link Here | 
        
          | 602 |             $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 604 |             $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 
        
          | 603 |         } | 605 |         } | 
        
          | 604 |  | 606 |  | 
          
            
              | 605 |         foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { | 607 |         foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) { | 
        
          | 606 |             next if $transport eq 'itiva'; | 608 |             next if $transport eq 'itiva'; | 
        
          | 607 |             my $letter = parse_letter( | 609 |             my $letter = parse_letter( | 
        
          | 608 |                 { | 610 |                 { |