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

(-)a/misc/cronjobs/overdue_notices.pl (-12 / +11 lines)
Lines 446-462 if(@myborcatout){ Link Here
446
## collect everything in meaningful hashes
446
## collect everything in meaningful hashes
447
##
447
##
448
my $hrBorrowers = $dbh->selectall_hashref($sqlBorrowers, 'borrowernumber');
448
my $hrBorrowers = $dbh->selectall_hashref($sqlBorrowers, 'borrowernumber');
449
VERBOSE("$sqlBorrowers\nReturned " . (scalar keys $hrBorrowers) . " borrowers with issues.");
449
VERBOSE("$sqlBorrowers\nReturned " . (scalar keys %$hrBorrowers) . " borrowers with issues.");
450
my $hrOverdueIssues = $dbh->selectall_hashref($sqlIssues, 'itemnumber' );
450
my $hrOverdueIssues = $dbh->selectall_hashref($sqlIssues, 'itemnumber' );
451
VERBOSE("$sqlIssues\nReturned " . (scalar keys $hrOverdueIssues) . " overdue issues.");
451
VERBOSE("$sqlIssues\nReturned " . (scalar keys %$hrOverdueIssues) . " overdue issues.");
452
my $arRules = $dbh->selectall_arrayref($sqlRules, { Slice => {} } );
452
my $arRules = $dbh->selectall_arrayref($sqlRules, { Slice => {} } );
453
VERBOSE("\nRule order:\nId\tBranch\tCat\tItem\tHold\tDelay\tDebarred\tLetter");
453
VERBOSE("\nRule order:\nId\tBranch\tCat\tItem\tHold\tDelay\tDebarred\tLetter");
454
foreach my $rule (@$arRules){
454
foreach my $rule (@$arRules){
455
    $rule->{mtt} = $dbh->selectcol_arrayref($sqlMTT, undef, $rule->{overduerules_id});
455
    $rule->{mtt} = $dbh->selectcol_arrayref($sqlMTT, undef, $rule->{overduerules_id});
456
    VERBOSE("$rule->{id}\t$rule->{branchcode}\t$rule->{categorycode}\t$rule->{itemtype}\t$rule->{onhold}\t$rule->{delay}\t$rule->{debarred}\t$rule->{letter}");
456
    VERBOSE("$rule->{overduerules_id}\t$rule->{branchcode}\t$rule->{categorycode}\t$rule->{itemtype}\t$rule->{onhold}\t$rule->{delay}\t$rule->{debarred}\t$rule->{letter}");
457
}
457
}
458
my $hrReserves = $dbh->selectall_hashref($sqlReserves, 'biblionumber');
458
my $hrReserves = $dbh->selectall_hashref($sqlReserves, 'biblionumber');
459
VERBOSE("$sqlReserves\nReturned " . (scalar keys $hrReserves) . " unique reserves.");
459
VERBOSE("$sqlReserves\nReturned " . (scalar keys %$hrReserves) . " unique reserves.");
460
my %hBranches;
460
my %hBranches;
461
my %hChunks; # messages to send once per branch to the administrator
461
my %hChunks; # messages to send once per branch to the administrator
462
462
Lines 466-472 my %hChunks; # messages to send once per branch to the administrator Link Here
466
##
466
##
467
467
468
my $whichItemType = C4::Context->preference('item-level_itypes') ? 'itype' : 'itemtype';
468
my $whichItemType = C4::Context->preference('item-level_itypes') ? 'itype' : 'itemtype';
469
foreach my $in (keys $hrOverdueIssues){
469
foreach my $in (keys %$hrOverdueIssues){
470
    my $issue = $hrOverdueIssues->{$in};
470
    my $issue = $hrOverdueIssues->{$in};
471
    VERBOSE("Processing issue $in.  branchcode: $issue->{branchcode}, borrower: $issue->{borrowernumber}.");
471
    VERBOSE("Processing issue $in.  branchcode: $issue->{branchcode}, borrower: $issue->{borrowernumber}.");
472
    foreach my $rule(@$arRules){
472
    foreach my $rule(@$arRules){
Lines 498-504 foreach my $in (keys $hrOverdueIssues){ Link Here
498
498
499
            # we found the best rule to apply, let's store the branchcode/lettter combo into the borrower
499
            # we found the best rule to apply, let's store the branchcode/lettter combo into the borrower
500
            my $arItems = $hrBorrowers->{$issue->{borrowernumber}}{NOTICES}{$issue->{branchcode}}{$rule->{letter}}{ITEMS} ||= [];
500
            my $arItems = $hrBorrowers->{$issue->{borrowernumber}}{NOTICES}{$issue->{branchcode}}{$rule->{letter}}{ITEMS} ||= [];
501
            push $arItems, $issue->{itemnumber};
501
            push @$arItems, $issue->{itemnumber};
502
            # And note that we union the transport types, so IF the user set two similar alerts (except for delay and mtt), then
502
            # And note that we union the transport types, so IF the user set two similar alerts (except for delay and mtt), then
503
            # only one message will be sent to each of the transport specified by both rules together
503
            # only one message will be sent to each of the transport specified by both rules together
504
            my $hrMtts = $hrBorrowers->{$issue->{borrowernumber}}{NOTICES}{$issue->{branchcode}}{$rule->{letter}}{MTTS} ||= {};
504
            my $hrMtts = $hrBorrowers->{$issue->{borrowernumber}}{NOTICES}{$issue->{branchcode}}{$rule->{letter}}{MTTS} ||= {};
Lines 525-537 foreach my $in (keys $hrOverdueIssues){ Link Here
525
## Main loop
525
## Main loop
526
##
526
##
527
VERBOSE("Main loop.");
527
VERBOSE("Main loop.");
528
foreach my $borrowernumber(keys $hrBorrowers){
528
foreach my $borrowernumber(keys %$hrBorrowers){
529
    if(!defined $hrBorrowers->{$borrowernumber}{NOTICES}){
529
    if(!defined $hrBorrowers->{$borrowernumber}{NOTICES}){
530
        VERBOSE("User $hrBorrowers->{$borrowernumber}{surname} has no notice.");
530
        VERBOSE("User $hrBorrowers->{$borrowernumber}{surname} has no notice.");
531
        next;
531
        next;
532
    }
532
    }
533
    # for each branch
533
    # for each branch
534
    foreach my $branchcode (keys $hrBorrowers->{$borrowernumber}{NOTICES}){
534
    foreach my $branchcode (keys %{$hrBorrowers->{$borrowernumber}{NOTICES}}){
535
        my $admin_email_address = $hBranches{$branchcode}{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
535
        my $admin_email_address = $hBranches{$branchcode}{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
536
        if($hBranches{$branchcode}{CALENDAR}->is_holiday($date_to_run)){
536
        if($hBranches{$branchcode}{CALENDAR}->is_holiday($date_to_run)){
537
            VERBOSE("$date_to_run is a holiday at branch $branchcode");
537
            VERBOSE("$date_to_run is a holiday at branch $branchcode");
Lines 539-545 foreach my $borrowernumber(keys $hrBorrowers){ Link Here
539
        }
539
        }
540
540
541
        # for each letter
541
        # for each letter
542
        foreach my $lettercode (keys $hrBorrowers->{$borrowernumber}{NOTICES}{$branchcode}){
542
        foreach my $lettercode (keys %{$hrBorrowers->{$borrowernumber}{NOTICES}{$branchcode}}){
543
            @emails_to_use = ();
543
            @emails_to_use = ();
544
            my $notice_email = C4::Members::GetNoticeEmailAddress($borrowernumber);
544
            my $notice_email = C4::Members::GetNoticeEmailAddress($borrowernumber);
545
            unless ($nomail) {
545
            unless ($nomail) {
Lines 579-585 foreach my $borrowernumber(keys $hrBorrowers){ Link Here
579
            }
579
            }
580
580
581
            # the transport types (email, sms...)
581
            # the transport types (email, sms...)
582
            my @message_transport_types = keys $hrBorrowers->{$borrowernumber}{NOTICES}{$branchcode}{$lettercode}{MTTS};
582
            my @message_transport_types = keys %{$hrBorrowers->{$borrowernumber}{NOTICES}{$branchcode}{$lettercode}{MTTS}};
583
            my $print_sent = 0; # A print notice is not yet sent for this patron
583
            my $print_sent = 0; # A print notice is not yet sent for this patron
584
            for my $mtt ( @message_transport_types ) {
584
            for my $mtt ( @message_transport_types ) {
585
                my $letter = parse_letter( {
585
                my $letter = parse_letter( {
Lines 610-616 foreach my $borrowernumber(keys $hrBorrowers){ Link Here
610
610
611
                if ($nomail) {
611
                if ($nomail) {
612
                    $hChunks{$admin_email_address} ||= [];
612
                    $hChunks{$admin_email_address} ||= [];
613
                    push $hChunks{$admin_email_address}, prepare_letter_for_printing( {
613
                    push @{$hChunks{$admin_email_address}}, prepare_letter_for_printing( {
614
                        letter         => $letter,
614
                        letter         => $letter,
615
                        borrowernumber => $borrowernumber,
615
                        borrowernumber => $borrowernumber,
616
                        firstname      => $hrBorrowers->{$borrowernumber}->{'firstname'},
616
                        firstname      => $hrBorrowers->{$borrowernumber}->{'firstname'},
617
- 

Return to bug 12772