[Patches] [PATCH] Bug 6835 - Ability to specify types of email address in overdue_notices.pl
koha-patchbot at kohaaloha.com
koha-patchbot at kohaaloha.com
Sat Nov 5 04:50:02 NZDT 2011
From: Alex Arnaud <alex.arnaud at biblibre.com>
Date: Fri, 2 Sep 2011 11:40:40 +0200
Subject: [PATCH] Bug 6835 - Ability to specify types of email address in overdue_notices.pl
- perltidy done
- in production for a BibLibre customer
- validated by the customer
Signed-off-by: Claire Hernandez <claire.hernandez at biblibre.com>
---
C4/Members.pm | 33 +++++++++++++++++++++++++++++++++
misc/cronjobs/overdue_notices.pl | 32 ++++++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 2 deletions(-)
diff --git a/C4/Members.pm b/C4/Members.pm
index 56718f0..4a66900 100644
--- a/C4/Members.pm
+++ b/C4/Members.pm
@@ -59,6 +59,7 @@ BEGIN {
&getidcity
&GetFirstValidEmailAddress
+ &GetValidEmailAddresses
&GetAge
&GetCities
@@ -1324,6 +1325,38 @@ sub GetFirstValidEmailAddress {
}
}
+
+=head2 GetValidEmailAddresses
+
+ $email = GetValidEmailAddresses($borrowernumber);
+
+Return all the valid email address for a borrower, given the borrowernumber. Returns an hash.
+
+=cut
+
+sub GetValidEmailAddresses {
+ my $borrowernumber = shift;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare(
+"SELECT email, emailpro, B_email FROM borrowers where borrowernumber = ? "
+ );
+ $sth->execute($borrowernumber);
+ my $data = $sth->fetchrow_hashref;
+ my %mailhash;
+
+ if ( $data->{'email'} ) {
+ $mailhash{'email'} = $data->{'email'};
+ }
+ if ( $data->{'emailpro'} ) {
+ $mailhash{'emailpro'} = $data->{'emailpro'};
+ }
+ if ( $data->{'B_email'} ) {
+ $mailhash{'B_email'} = $data->{'B_email'};
+ }
+ return \%mailhash;
+}
+
+
=head2 GetExpiryDate
$expirydate = GetExpiryDate($categorycode, $dateenrolled);
diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index 37774b5..3dd25c8 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 <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
@@ -60,6 +63,7 @@ overdue_notices.pl [ -n ] [ -library <branchcode> ] [ -library <branchcode>...]
-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
@@ -143,6 +147,10 @@ Default items.content lists only those items that fall in the
range of the currently processing notice.
Choose list-all to include all overdue items in the list (limited by B<-max> setting).
+=item B<-email>
+
+Allows to specify which type of email will be used. Can be email, emailpro or B_email. Repeatable.
+
=back
=head1 DESCRIPTION
@@ -252,6 +260,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;
@@ -274,6 +284,7 @@ GetOptions(
't|triggered' => \$triggered,
'borcat=s' => \@myborcat,
'borcatout=s' => \@myborcatout,
+ 'email=s' => \@emails,
) or pod2usage(2);
pod2usage(1) if $help;
pod2usage( -verbose => 2 ) if $man;
@@ -458,6 +469,22 @@ END_SQL
$address1, $address2, $city, $postcode, $country, $email,
$longest_issue ) = $sth->fetchrow )
{
+ @emails_to_use = ();
+ if ( @emails && !$nomail ) {
+ my $validemails =
+ C4::Members::GetValidEmailAddresses($borrowernumber);
+ foreach (@emails) {
+ push @emails_to_use, $validemails->{$_}
+ if ( defined $validemails->{$_} );
+ }
+ $email = 1 if (@emails_to_use);
+ }
+ else {
+ $email =
+ C4::Members::GetFirstValidEmailAddress($borrowernumber);
+ push @emails_to_use, $email;
+ }
+
$verbose and warn "borrower $firstname, $lastname ($borrowernumber) has $itemcount items triggering level $i.";
my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"} );
@@ -539,12 +566,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.4.1
More information about the Patches
mailing list