| Lines 61-66
          use C4::Log;
      
      
        Link Here | 
        
          | 61 | use Koha::Items; | 61 | use Koha::Items; | 
        
          | 62 | use Koha::Libraries; | 62 | use Koha::Libraries; | 
        
          | 63 | use Koha::Patrons; | 63 | use Koha::Patrons; | 
            
              |  |  | 64 | use Koha::Patron::Message::Preferences; | 
        
          | 64 |  | 65 |  | 
        
          | 65 | =head1 NAME | 66 | =head1 NAME | 
        
          | 66 |  | 67 |  | 
  
    | Lines 261-271
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 261 |     my $borrower_preferences; | 262 |     my $borrower_preferences; | 
        
          | 262 |     if ( 0 == $upcoming->{'days_until_due'} ) { | 263 |     if ( 0 == $upcoming->{'days_until_due'} ) { | 
        
          | 263 |         # This item is due today. Send an 'item due' message. | 264 |         # This item is due today. Send an 'item due' message. | 
          
            
              | 264 |         $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, | 265 |         $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ | 
            
              | 265 |                                                                                    message_name   => 'item_due' } ); | 266 |             borrowernumber => $upcoming->{'borrowernumber'}, | 
            
              |  |  | 267 |             message_name   => 'item_due', | 
            
              | 268 |         }); | 
        
          | 266 |         next unless $borrower_preferences; | 269 |         next unless $borrower_preferences; | 
        
          | 267 |          | 270 |          | 
          
            
              | 268 |         if ( $borrower_preferences->{'wants_digest'} ) { | 271 |         if ( $borrower_preferences->wants_digest ) { | 
        
          | 269 |             # cache this one to process after we've run through all of the items. | 272 |             # cache this one to process after we've run through all of the items. | 
        
          | 270 |             if ($digest_per_branch) { | 273 |             if ($digest_per_branch) { | 
        
          | 271 |                 $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 274 |                 $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 
  
    | Lines 284-290
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 284 |             } | 287 |             } | 
        
          | 285 |  | 288 |  | 
        
          | 286 |             ## Get branch info for borrowers home library. | 289 |             ## Get branch info for borrowers home library. | 
          
            
              | 287 |             foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { | 290 |             foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { | 
        
          | 288 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 291 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 
        
          | 289 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 292 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 
        
          | 290 |                                       branchcode     => $upcoming->{'branchcode'}, | 293 |                                       branchcode     => $upcoming->{'branchcode'}, | 
  
    | Lines 298-309
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 298 |             } | 301 |             } | 
        
          | 299 |         } | 302 |         } | 
        
          | 300 |     } else { | 303 |     } else { | 
          
            
              | 301 |         $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, | 304 |         $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ | 
            
              | 302 |                                                                                    message_name   => 'advance_notice' } ); | 305 |             borrowernumber => $upcoming->{'borrowernumber'}, | 
            
              | 303 |         next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'}; | 306 |             message_name   => 'advance_notice', | 
            
              | 304 |         next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'}; | 307 |         }); | 
            
              |  |  | 308 |         next UPCOMINGITEM unless $borrower_preferences && defined $borrower_preferences->days_in_advance; | 
            
              | 309 |         next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'}; | 
        
          | 305 |  | 310 |  | 
          
            
              | 306 |         if ( $borrower_preferences->{'wants_digest'} ) { | 311 |         if ( $borrower_preferences->wants_digest ) { | 
        
          | 307 |             # cache this one to process after we've run through all of the items. | 312 |             # cache this one to process after we've run through all of the items. | 
        
          | 308 |             if ($digest_per_branch) { | 313 |             if ($digest_per_branch) { | 
        
          | 309 |                 $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 314 |                 $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address; | 
  
    | Lines 315-328
          UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
      
      
        Link Here | 
        
          | 315 |         } else { | 320 |         } else { | 
        
          | 316 |             my $item = Koha::Items->find( $upcoming->{itemnumber} ); | 321 |             my $item = Koha::Items->find( $upcoming->{itemnumber} ); | 
        
          | 317 |             my $letter_type = 'PREDUE'; | 322 |             my $letter_type = 'PREDUE'; | 
          
            
              | 318 |             $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'}); | 323 |             $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance); | 
        
          | 319 |             my $titles = ""; | 324 |             my $titles = ""; | 
        
          | 320 |             while ( my $item_info = $sth->fetchrow_hashref()) { | 325 |             while ( my $item_info = $sth->fetchrow_hashref()) { | 
        
          | 321 |                 $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 326 |                 $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 
        
          | 322 |             } | 327 |             } | 
        
          | 323 |  | 328 |  | 
        
          | 324 |             ## Get branch info for borrowers home library. | 329 |             ## Get branch info for borrowers home library. | 
          
            
              | 325 |             foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { | 330 |             foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { | 
        
          | 326 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 331 |                 my $letter = parse_letter( { letter_code    => $letter_type, | 
        
          | 327 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 332 |                                       borrowernumber => $upcoming->{'borrowernumber'}, | 
        
          | 328 |                                       branchcode     => $upcoming->{'branchcode'}, | 333 |                                       branchcode     => $upcoming->{'branchcode'}, | 
  
    | Lines 380-386
          if ($digest_per_branch) {
      
      
        Link Here | 
        
          | 380 |             get_item_info => sub { | 385 |             get_item_info => sub { | 
        
          | 381 |                 my $params = shift; | 386 |                 my $params = shift; | 
        
          | 382 |                 $params->{sth}->execute($params->{borrowernumber}, | 387 |                 $params->{sth}->execute($params->{borrowernumber}, | 
          
            
              | 383 |                                         $params->{borrower_preferences}->{'days_in_advance'}); | 388 |                                         $params->{borrower_preferences}->days_in_advance); | 
        
          | 384 |                 return sub { | 389 |                 return sub { | 
        
          | 385 |                     $params->{sth}->fetchrow_hashref; | 390 |                     $params->{sth}->fetchrow_hashref; | 
        
          | 386 |                 }; | 391 |                 }; | 
  
    | Lines 413-419
          if ($digest_per_branch) {
      
      
        Link Here | 
        
          | 413 |         get_item_info => sub { | 418 |         get_item_info => sub { | 
        
          | 414 |             my $params = shift; | 419 |             my $params = shift; | 
        
          | 415 |             $params->{sth}->execute($params->{borrowernumber}, | 420 |             $params->{sth}->execute($params->{borrowernumber}, | 
          
            
              | 416 |                                     $params->{borrower_preferences}->{'days_in_advance'}); | 421 |                                     $params->{borrower_preferences}->days_in_advance); | 
        
          | 417 |             return sub { | 422 |             return sub { | 
        
          | 418 |                 $params->{sth}->fetchrow_hashref; | 423 |                 $params->{sth}->fetchrow_hashref; | 
        
          | 419 |             }; | 424 |             }; | 
  
    | Lines 549-561
          sub send_digests {
      
      
        Link Here | 
        
          | 549 |             $branchcode = $branch_info{'branches.branchcode'}; | 554 |             $branchcode = $branch_info{'branches.branchcode'}; | 
        
          | 550 |         } | 555 |         } | 
        
          | 551 |  | 556 |  | 
          
            
              | 552 |         my $borrower_preferences = | 557 |         my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ | 
            
              | 553 |             C4::Members::Messaging::GetMessagingPreferences( | 558 |             borrowernumber => $borrowernumber, | 
            
              | 554 |                 { | 559 |             message_name   => $params->{message_name}, | 
            
              | 555 |                     borrowernumber => $borrowernumber, | 560 |         }); | 
            
              | 556 |                     message_name   => $params->{message_name} |  |  | 
            
              | 557 |                 } | 
            
              | 558 |             ); | 
        
          | 559 |  | 561 |  | 
        
          | 560 |         next PATRON unless $borrower_preferences; # how could this happen? | 562 |         next PATRON unless $borrower_preferences; # how could this happen? | 
        
          | 561 |  | 563 |  | 
  
    | Lines 569-575
          sub send_digests {
      
      
        Link Here | 
        
          | 569 |             $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 571 |             $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } ); | 
        
          | 570 |         } | 572 |         } | 
        
          | 571 |  | 573 |  | 
          
            
              | 572 |         foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { | 574 |         foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) { | 
        
          | 573 |             my $letter = parse_letter( | 575 |             my $letter = parse_letter( | 
        
          | 574 |                 { | 576 |                 { | 
        
          | 575 |                     letter_code    => $params->{letter_code}, | 577 |                     letter_code    => $params->{letter_code}, |