| 
      
            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 | 
              -   | 
               | 
               |