=head1 SYNOPSIS
-overdue_notices.pl [ -n ] [ -library <branchcode> ] [ -library <branchcode>...] [ -max <number of days> ] [ -csv [ <filename> ] ] [ -itemscontent <field list> ]
+overdue_notices.pl
+ [ -n ][ -library <branchcode> ][ -library <branchcode> ... ]
+ [ -max <number of days> ][ -csv [<filename>] ][ -itemscontent <field list> ]
+ [ -email <email_type> ... ]
Options:
-help brief help message
-itemscontent <list of fields> item information in templates
-borcat <categorycode> category code that must be included
-borcatout <categorycode> category code that must be excluded
+ -email <email_type> type of email that will be used. Can be 'email', 'emailpro' or 'B_email'. Repeatable.
=head1 OPTIONS
use it in order to send overdues on a specific date and not Now.
+=item B<-email>
+
+Allows to specify which type of email will be used. Can be email, emailpro or B_email. Repeatable.
+
=back
=head1 DESCRIPTION
my $nomail = 0;
my $MAX = 90;
my @branchcodes; # Branch(es) passed as parameter
+my @emails_to_use; # Emails to use for messaging
+my @emails; # Emails given in command-line parameters
my $csvfilename;
my $htmlfilename;
my $triggered = 0;
'date' => \$date,
'borcat=s' => \@myborcat,
'borcatout=s' => \@myborcatout,
+ 'email=s' => \@emails,
) or pod2usage(2);
pod2usage(1) if $help;
pod2usage( -verbose => 2 ) if $man;
) = $sth->fetchrow )
{
$verbose and warn "borrower $firstname, $lastname ($borrowernumber) has items triggering level $i.";
+ @emails_to_use = ();
+ if ( !$nomail) {
+ if ( @emails ) {
+ my $memberinfos = C4::Members::GetMember(borrowernumber => $borrowernumber);
+ foreach (@emails) {
+ push @emails_to_use, $memberinfos->{$_}
+ if ($memberinfos->{$_} ne '');
+ }
+ }
+ else {
+ $email =
+ C4::Members::GetFirstValidEmailAddress($borrowernumber);
+ push @emails_to_use, $email if ($email ne '');
+ }
+ }
+
+ my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"}, $branchcode );
+
+ unless ($letter) {
+ $verbose and warn "Message '$overdue_rules->{letter$i}' content not found";
+
+ # might as well skip while PERIOD, no other borrowers are going to work.
+ # FIXME : Does this mean a letter must be defined in order to trigger a debar ?
+ next PERIOD;
+ }
if ( $overdue_rules->{"debarred$i"} ) {
my $j = 0;
my $exceededPrintNoticesMaxLines = 0;
while ( my $item_info = $sth2->fetchrow_hashref() ) {
- if ( ( !$email || $nomail ) && $PrintNoticesMaxLines && $j >= $PrintNoticesMaxLines ) {
+ if ( ( scalar(@emails_to_use) == 0 || $nomail ) && $PrintNoticesMaxLines && $j >= $PrintNoticesMaxLines ) {
$exceededPrintNoticesMaxLines = 1;
last;
}
}
$sth2->finish;
- my $letter = parse_letter(
+ $letter = parse_letter(
{ letter_code => $overdue_rules->{"letter$i"},
borrowernumber => $borrowernumber,
branchcode => $branchcode,
}
);
} else {
- if ($email) {
+ if (scalar(@emails_to_use) > 0 ) {
C4::Letters::EnqueueLetter(
{ letter => $letter,
borrowernumber => $borrowernumber,
message_transport_type => 'email',
from_address => $admin_email_address,
+ to_address => join(',', @emails_to_use),
}
);
} else {