From d903b6b10cfcbbbd64e94523a7d24f44c138cabe Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Fri, 2 Sep 2011 11:40:40 +0200 Subject: [PATCH] Bug 6835 - Ability to specify types of email address in overdue_notices.pl Adds the -email option to overdue_notices.pl, which is repeatable -email value can be: - 'email' - 'emailpro' or - 'B_email' - perltidy done - in production for a BibLibre customer - validated by the customer Signed-off-by: Claire Hernandez --- misc/cronjobs/overdue_notices.pl | 45 ++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl index e83bd39..157f09c 100755 --- a/misc/cronjobs/overdue_notices.pl +++ b/misc/cronjobs/overdue_notices.pl @@ -47,7 +47,10 @@ overdue_notices.pl - prepare messages to be sent to patrons for overdue items =head1 SYNOPSIS -overdue_notices.pl [ -n ] [ -library ] [ -library ...] [ -max ] [ -csv [ ] ] [ -itemscontent ] +overdue_notices.pl + [ -n ][ -library ][ -library ... ] + [ -max ][ -csv [] ][ -itemscontent ] + [ -email ... ] Options: -help brief help message @@ -60,6 +63,7 @@ overdue_notices.pl [ -n ] [ -library ] [ -library ...] -itemscontent item information in templates -borcat category code that must be included -borcatout category code that must be excluded + -email type of email that will be used. Can be 'email', 'emailpro' or 'B_email'. Repeatable. =head1 OPTIONS @@ -147,6 +151,10 @@ Choose list-all to include all overdue items in the list (limited by B<-max> set 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 @@ -256,6 +264,8 @@ my $verbose = 0; 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; @@ -280,6 +290,7 @@ GetOptions( 'date' => \$date, 'borcat=s' => \@myborcat, 'borcatout=s' => \@myborcatout, + 'email=s' => \@emails, ) or pod2usage(2); pod2usage(1) if $help; pod2usage( -verbose => 2 ) if $man; @@ -478,6 +489,31 @@ END_SQL ) = $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"} ) { @@ -495,7 +531,7 @@ END_SQL 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; } @@ -507,7 +543,7 @@ END_SQL } $sth2->finish; - my $letter = parse_letter( + $letter = parse_letter( { letter_code => $overdue_rules->{"letter$i"}, letter => $letter_template, borrowernumber => $borrowernumber, @@ -558,12 +594,13 @@ END_SQL } ); } 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 { -- 1.7.9.5