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

(-)a/C4/Letters.pm (-7 / +1 lines)
Lines 919-931 sub _send_message_by_email { Link Here
919
                                   status     => 'failed' } );
919
                                   status     => 'failed' } );
920
            return;
920
            return;
921
        }
921
        }
922
        my $which_address = C4::Context->preference('AutoEmailPrimaryAddress');
922
        $to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} );
923
        # If the system preference is set to 'first valid' (value == OFF), look up email address
924
        if ($which_address eq 'OFF') {
925
            $to_address = GetFirstValidEmailAddress( $message->{'borrowernumber'} );
926
        } else {
927
            $to_address = $member->{$which_address};
928
        }
929
        unless ($to_address) {  
923
        unless ($to_address) {  
930
            # warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})";
924
            # warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})";
931
            # warning too verbose for this more common case?
925
            # warning too verbose for this more common case?
(-)a/C4/Members.pm (+30 lines)
Lines 66-71 BEGIN { Link Here
66
        &getidcity
66
        &getidcity
67
67
68
        &GetFirstValidEmailAddress
68
        &GetFirstValidEmailAddress
69
        &GetNoticeEmailAddress
69
70
70
        &GetAge
71
        &GetAge
71
        &GetCities
72
        &GetCities
Lines 1359-1364 sub GetFirstValidEmailAddress { Link Here
1359
    }
1360
    }
1360
}
1361
}
1361
1362
1363
=head2 GetNoticeEmailAddress
1364
1365
  $email = GetNoticeEmailAddress($borrowernumber);
1366
1367
Return the email address of borrower used for notices, given the borrowernumber.
1368
Returns the empty string if no email address.
1369
1370
=cut
1371
1372
sub GetNoticeEmailAddress {
1373
    my $borrowernumber = shift;
1374
1375
    my $which_address = C4::Context->preference("AutoEmailPrimaryAddress");
1376
    # if syspref is set to 'first valid' (value == OFF), look up email address
1377
    if ( $which_address eq 'OFF' ) {
1378
        return GetFirstValidEmailAddress($borrowernumber);
1379
    }
1380
    # specified email address field
1381
    my $dbh = C4::Context->dbh;
1382
    my $sth = $dbh->prepare( qq{
1383
        SELECT $which_address AS primaryemail
1384
        FROM borrowers
1385
        WHERE borrowernumber=?
1386
    } );
1387
    $sth->execute($borrowernumber);
1388
    my $data = $sth->fetchrow_hashref;
1389
    return $data->{'primaryemail'} || '';
1390
}
1391
1362
=head2 GetExpiryDate 
1392
=head2 GetExpiryDate 
1363
1393
1364
  $expirydate = GetExpiryDate($categorycode, $dateenrolled);
1394
  $expirydate = GetExpiryDate($categorycode, $dateenrolled);
(-)a/C4/Reserves.pm (-8 / +1 lines)
Lines 1835-1848 sub _koha_notify_reserve { Link Here
1835
    my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
1835
    my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
1836
    
1836
    
1837
    # Try to get the borrower's email address
1837
    # Try to get the borrower's email address
1838
    my $to_address;
1838
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1839
    my $which_address = C4::Context->preference('AutoEmailPrimaryAddress');
1840
    # If the system preference is set to 'first valid' (value == OFF), look up email address
1841
    if ($which_address eq 'OFF') {
1842
        $to_address = C4::Members::GetFirstValidEmailAddress( $borrowernumber );
1843
    } else {
1844
        $to_address = $borrower->{$which_address};
1845
    }
1846
    
1839
    
1847
    my $letter_code;
1840
    my $letter_code;
1848
    my $print_mode = 0;
1841
    my $print_mode = 0;
(-)a/misc/cronjobs/overdue_notices.pl (-58 / +37 lines)
Lines 450-456 END_SQL Link Here
450
            # <date> <itemcount> <firstname> <lastname> <address1> <address2> <address3> <city> <postcode> <country>
450
            # <date> <itemcount> <firstname> <lastname> <address1> <address2> <address3> <city> <postcode> <country>
451
451
452
            my $borrower_sql = <<'END_SQL';
452
            my $borrower_sql = <<'END_SQL';
453
SELECT distinct(issues.borrowernumber), firstname, surname, address, address2, city, zipcode, country, email
453
SELECT distinct(issues.borrowernumber), firstname, surname, address, address2, city, zipcode, country, email, emailpro, B_email
454
FROM   issues,borrowers,categories
454
FROM   issues,borrowers,categories
455
WHERE  issues.borrowernumber=borrowers.borrowernumber
455
WHERE  issues.borrowernumber=borrowers.borrowernumber
456
AND    borrowers.categorycode=categories.categorycode
456
AND    borrowers.categorycode=categories.categorycode
Lines 478-501 END_SQL Link Here
478
            $sth->execute(@borrower_parameters);
478
            $sth->execute(@borrower_parameters);
479
            $verbose and warn $borrower_sql . "\n $branchcode | " . $overdue_rules->{'categorycode'} . "\n ($mindays, $maxdays)\nreturns " . $sth->rows . " rows";
479
            $verbose and warn $borrower_sql . "\n $branchcode | " . $overdue_rules->{'categorycode'} . "\n ($mindays, $maxdays)\nreturns " . $sth->rows . " rows";
480
480
481
            while ( my ( $borrowernumber, $firstname, $lastname,
481
            while ( my $data = $sth->fetchrow_hashref ) {
482
                    $address1, $address2, $city, $postcode, $country, $email
482
                my $borrowernumber = $data->{'borrowernumber'};
483
                    ) = $sth->fetchrow )
483
                my $borr =
484
            {
484
                    $data->{'firstname'} . ', '
485
                $verbose and warn "borrower $firstname, $lastname ($borrowernumber) has items triggering level $i.";
485
                  . $data->{'surname'} . ' ('
486
                  . $borrowernumber . ')';
487
                $verbose
488
                  and warn "borrower $borr has items triggering level $i.";
489
486
                @emails_to_use = ();
490
                @emails_to_use = ();
487
                if ( !$nomail) {
491
                my $notice_email =
488
                    if ( @emails ) {
492
                    C4::Members::GetNoticeEmailAddress($borrowernumber);
489
                        my $memberinfos = C4::Members::GetMember(borrowernumber => $borrowernumber);
493
                unless ($nomail) {
494
                    if (@emails) {
490
                        foreach (@emails) {
495
                        foreach (@emails) {
491
                            push @emails_to_use, $memberinfos->{$_}
496
                            push @emails_to_use, $data->{$_} if ( $data->{$_} );
492
                              if ($memberinfos->{$_} ne '');
493
                        }
497
                        }
494
                    }
498
                    }
495
                    else {
499
                    else {
496
                        $email =
500
                        push @emails_to_use, $notice_email if ($notice_email);
497
                          C4::Members::GetFirstValidEmailAddress($borrowernumber);
498
                        push @emails_to_use, $email if ($email ne '');
499
                    }
501
                    }
500
                }
502
                }
501
503
Lines 513-519 END_SQL Link Here
513
    
515
    
514
                    #action taken is debarring
516
                    #action taken is debarring
515
                    C4::Members::DebarMember($borrowernumber, '9999-12-31');
517
                    C4::Members::DebarMember($borrowernumber, '9999-12-31');
516
                    $verbose and warn "debarring $borrowernumber $firstname $lastname\n";
518
                    $verbose and warn "debarring $borr\n";
517
                }
519
                }
518
                my @params = ($listall ? ( $borrowernumber , 1 , $MAX ) : ( $borrowernumber, $mindays, $maxdays ));
520
                my @params = ($listall ? ( $borrowernumber , 1 , $MAX ) : ( $borrowernumber, $mindays, $maxdays ));
519
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber, mindays = $mindays, maxdays = $maxdays";
521
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber, mindays = $mindays, maxdays = $maxdays";
Lines 567-623 END_SQL Link Here
567
                }
569
                }
568
                $letter->{'content'} =~ s/\<[^<>]*?\>//g;    # Now that we've warned about them, remove them.
570
                $letter->{'content'} =~ s/\<[^<>]*?\>//g;    # Now that we've warned about them, remove them.
569
                $letter->{'content'} =~ s/\<[^<>]*?\>//g;    # 2nd pass for the double nesting.
571
                $letter->{'content'} =~ s/\<[^<>]*?\>//g;    # 2nd pass for the double nesting.
570
    
572
571
                if ($nomail) {
573
                if ( !$nomail && scalar @emails_to_use ) {
572
    
574
                    C4::Letters::EnqueueLetter(
575
                        {   letter                 => $letter,
576
                            borrowernumber         => $borrowernumber,
577
                            message_transport_type => 'email',
578
                            from_address           => $admin_email_address,
579
                            to_address             => join(',', @emails_to_use),
580
                        }
581
                    );
582
                } else {
583
                    # if not sent by email then print
573
                    push @output_chunks,
584
                    push @output_chunks,
574
                      prepare_letter_for_printing(
585
                      prepare_letter_for_printing(
575
                        {   letter         => $letter,
586
                        {   letter         => $letter,
576
                            borrowernumber => $borrowernumber,
587
                            borrowernumber => $borrowernumber,
577
                            firstname      => $firstname,
588
                            firstname      => $data->{'firstname'},
578
                            lastname       => $lastname,
589
                            lastname       => $data->{'surname'},
579
                            address1       => $address1,
590
                            address1       => $data->{'address'},
580
                            address2       => $address2,
591
                            address2       => $data->{'address2'},
581
                            city           => $city,
592
                            city           => $data->{'city'},
582
                            postcode       => $postcode,
593
                            postcode       => $data->{'zipcode'},
583
                            country        => $country,
594
                            country        => $data->{'country'},
584
                            email          => $email,
595
                            email          => $notice_email,
585
                            itemcount      => $itemcount,
596
                            itemcount      => $itemcount,
586
                            titles         => $titles,
597
                            titles         => $titles,
587
                            outputformat   => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : '',
598
                            outputformat   => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : '',
588
                        }
599
                        }
589
                      );
600
                      );
590
                } else {
591
                    if (scalar(@emails_to_use) > 0 ) {
592
                        C4::Letters::EnqueueLetter(
593
                            {   letter                 => $letter,
594
                                borrowernumber         => $borrowernumber,
595
                                message_transport_type => 'email',
596
                                from_address           => $admin_email_address,
597
                                to_address             => join(',', @emails_to_use),
598
                            }
599
                        );
600
                    } else {
601
    
602
                        # If we don't have an email address for this patron, send it to the admin to deal with.
603
                        push @output_chunks,
604
                          prepare_letter_for_printing(
605
                            {   letter         => $letter,
606
                                borrowernumber => $borrowernumber,
607
                                firstname      => $firstname,
608
                                lastname       => $lastname,
609
                                address1       => $address1,
610
                                address2       => $address2,
611
                                city           => $city,
612
                                postcode       => $postcode,
613
                                country        => $country,
614
                                email          => $email,
615
                                itemcount      => $itemcount,
616
                                titles         => $titles,
617
                                outputformat   => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : '',
618
                            }
619
                          );
620
                    }
621
                }
601
                }
622
            }
602
            }
623
            $sth->finish;
603
            $sth->finish;
624
- 

Return to bug 9103