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

(-)a/misc/cronjobs/overdue_notices.pl (-3 / +19 lines)
Lines 78-83 overdue_notices.pl Link Here
78
   -email        <email_type>     Type of email that will be used.
78
   -email        <email_type>     Type of email that will be used.
79
                                  Can be 'email', 'emailpro' or 'B_email'. Repeatable.
79
                                  Can be 'email', 'emailpro' or 'B_email'. Repeatable.
80
   --frombranch                   Set the from address for the notice to one of 'item-homebranch' or 'item-issuebranch'.
80
   --frombranch                   Set the from address for the notice to one of 'item-homebranch' or 'item-issuebranch'.
81
   -a           <branchcode>      Create only one message per borrower and delay level including overdues from all branches.
81
82
82
=head1 OPTIONS
83
=head1 OPTIONS
83
84
Lines 192-197 Use the address information from the item homebranch library instead of the issu Link Here
192
193
193
Defaults to 'item-issuebranch'
194
Defaults to 'item-issuebranch'
194
195
196
=item B<-a> | B<--all_in_one>
197
198
Create only one message per borrower and for each delay level including overdues from all branches.
199
Branchcode value (branches.branchcode) has to be given to choose which sender address will be set.
200
It's recommended to use this option only with default notice(s) defined for 'All branches'
201
in Notices & Slips and no specific ones.
202
195
=back
203
=back
196
204
197
=head1 DESCRIPTION
205
=head1 DESCRIPTION
Lines 314-319 my $itemscontent = join( ',', qw( date_due title barcode author itemnumber ) ); Link Here
314
my @myborcat;
322
my @myborcat;
315
my @myborcatout;
323
my @myborcatout;
316
my ( $date_input, $today );
324
my ( $date_input, $today );
325
my $all_in_one;
317
326
318
GetOptions(
327
GetOptions(
319
    'help|?'         => \$help,
328
    'help|?'         => \$help,
Lines 334-339 GetOptions( Link Here
334
    'borcatout=s'    => \@myborcatout,
343
    'borcatout=s'    => \@myborcatout,
335
    'email=s'        => \@emails,
344
    'email=s'        => \@emails,
336
    'frombranch=s'   => \$frombranch,
345
    'frombranch=s'   => \$frombranch,
346
    'a|all_in_one=s' => \$all_in_one,
337
) or pod2usage(2);
347
) or pod2usage(2);
338
pod2usage(1) if $help;
348
pod2usage(1) if $help;
339
pod2usage( -verbose => 2 ) if $man;
349
pod2usage( -verbose => 2 ) if $man;
Lines 459-464 elsif ( defined $text_filename ) { Link Here
459
  }
469
  }
460
}
470
}
461
471
472
my %already_queued;
473
my %seen = map { $_ => 1 } @branches;
462
foreach my $branchcode (@branches) {
474
foreach my $branchcode (@branches) {
463
    my $calendar;
475
    my $calendar;
464
    if ( C4::Context->preference('OverdueNoticeCalendar') ) {
476
    if ( C4::Context->preference('OverdueNoticeCalendar') ) {
Lines 468-474 foreach my $branchcode (@branches) { Link Here
468
        }
480
        }
469
    }
481
    }
470
482
471
    my $library             = Koha::Libraries->find($branchcode);
483
    my $library             = $all_in_one ? Koha::Libraries->find($all_in_one) : Koha::Libraries->find($branchcode);
472
    my $admin_email_address = $library->from_email_address;
484
    my $admin_email_address = $library->from_email_address;
473
    my $branch_email_address = C4::Context->preference('AddressForFailedOverdueNotices')
485
    my $branch_email_address = C4::Context->preference('AddressForFailedOverdueNotices')
474
      || $library->inbound_email_address;
486
      || $library->inbound_email_address;
Lines 487-492 SELECT biblio.*, items.*, issues.*, biblioitems.itemtype, branchname Link Here
487
    AND items.itemlost = 0
499
    AND items.itemlost = 0
488
    AND TO_DAYS($date)-TO_DAYS(issues.date_due) >= 0
500
    AND TO_DAYS($date)-TO_DAYS(issues.date_due) >= 0
489
END_SQL
501
END_SQL
502
    $sql2.= " AND issues.branchcode = ?" unless $all_in_one;
503
    my $sth2 =  $dbh->prepare($sql2);
490
504
491
    if($owning_library) {
505
    if($owning_library) {
492
      $sql2 .= ' AND items.homebranch = ? ';
506
      $sql2 .= ' AND items.homebranch = ? ';
Lines 601-606 END_SQL Link Here
601
                    next;
615
                    next;
602
                }
616
                }
603
                $borrowernumber = $data->{'borrowernumber'};
617
                $borrowernumber = $data->{'borrowernumber'};
618
                next if ($all_in_one && $already_queued{"$borrowernumber$i"});
604
                my $borr = sprintf( "%s%s%s (%s)",
619
                my $borr = sprintf( "%s%s%s (%s)",
605
                    $data->{'surname'} || '',
620
                    $data->{'surname'} || '',
606
                    $data->{'firstname'} && $data->{'surname'} ? ', ' : '',
621
                    $data->{'firstname'} && $data->{'surname'} ? ', ' : '',
Lines 652-658 END_SQL Link Here
652
                    ) unless $test_mode;
667
                    ) unless $test_mode;
653
                    $verbose and warn "debarring $borr\n";
668
                    $verbose and warn "debarring $borr\n";
654
                }
669
                }
655
                my @params = ($borrowernumber,$branchcode);
670
                my @params = $all_in_one ? ($borrowernumber) : ($borrowernumber, $branchcode);
656
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber";
671
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber";
657
672
658
                $sth2->execute(@params);
673
                $sth2->execute(@params);
Lines 698-703 END_SQL Link Here
698
                      $exceededPrintNoticesMaxLines = 1;
713
                      $exceededPrintNoticesMaxLines = 1;
699
                      last;
714
                      last;
700
                    }
715
                    }
716
                    next if $all_in_one and ! grep {$seen{$item_info->{branchcode}}} @branches;
701
                    $j++;
717
                    $j++;
702
718
703
                    $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields, dateonly => 1 } );
719
                    $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields, dateonly => 1 } );
Lines 819-824 END_SQL Link Here
819
                        }
835
                        }
820
                    }
836
                    }
821
                }
837
                }
838
                $already_queued{"$borrowernumber$i"} = 1;
822
            }
839
            }
823
            $sth->finish;
840
            $sth->finish;
824
        }
841
        }
825
- 

Return to bug 17649