[Koha-patches] [PATCH 1/2] [SIGNED-OFF] bug 5929: use branch email in preference for due notices
Frédéric Demians
f.demians at tamil.fr
Fri May 13 18:12:50 CEST 2011
From: Srdjan Jankovic <srdjan at catalyst.net.nz>
Signed-off-by: Frédéric Demians <f.demians at tamil.fr>
---
C4/Circulation.pm | 3 ++-
misc/cronjobs/advance_notices.pl | 32 ++++++++++++++++++++++++--------
2 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 9a2db4c..5efd090 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -2093,9 +2093,10 @@ sub GetUpcomingDueIssues {
my $dbh = C4::Context->dbh;
my $statement = <<END_SQL;
-SELECT issues.*, items.itype as itemtype, items.homebranch, TO_DAYS( date_due )-TO_DAYS( NOW() ) as days_until_due
+SELECT issues.*, items.itype as itemtype, items.homebranch, TO_DAYS( date_due )-TO_DAYS( NOW() ) as days_until_due, branches.branchemail
FROM issues
LEFT JOIN items USING (itemnumber)
+LEFT OUTER JOIN branches USING (branchcode)
WhERE returndate is NULL
AND ( TO_DAYS( NOW() )-TO_DAYS( date_due ) ) < ?
END_SQL
diff --git a/misc/cronjobs/advance_notices.pl b/misc/cronjobs/advance_notices.pl
index 6a408e4..eb5071a 100755
--- a/misc/cronjobs/advance_notices.pl
+++ b/misc/cronjobs/advance_notices.pl
@@ -63,14 +63,12 @@ my $confirm; # -c: Confir
my $nomail; # -n: No mail. Will not send any emails.
my $mindays = 0; # -m: Maximum number of days in advance to send notices
my $maxdays = 30; # -e: the End of the time period
-my $fromaddress = C4::Context->preference('KohaAdminEmailAddress'); # -f: From address for the emails
my $verbose = 0; # -v: verbose
my $itemscontent = join(',',qw( issuedate title barcode author ));
GetOptions( 'c' => \$confirm,
'n' => \$nomail,
'm:i' => \$maxdays,
- 'f:s' => \$fromaddress,
'v' => \$verbose,
'itemscontent=s' => \$itemscontent,
);
@@ -83,7 +81,6 @@ See the comments in the script for directions on changing the script.
This script has the following parameters :
-c Confirm and remove this help & warning
-m maximum number of days in advance to send advance notices.
- -f from address for the emails. Defaults to KohaAdminEmailAddress system preference
-n send No mail. Instead, all mail messages are printed on screen. Usefull for testing purposes.
-v verbose
-i csv list of fields that get substituted into templates in places
@@ -135,10 +132,15 @@ SELECT biblio.*, items.*, issues.*
AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
END_SQL
+my $admin_adress = C4::Context->preference('KohaAdminEmailAddress');
+
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
warn 'examining ' . $upcoming->{'itemnumber'} . ' upcoming due items' if $verbose;
# warn( Data::Dumper->Dump( [ $upcoming ], [ 'overdue' ] ) );
+ my $from_address = $upcoming->{branchemail} || $admin_adress;
+ die Dumper($upcoming);
+
my $letter;
my $borrower_preferences;
if ( 0 == $upcoming->{'days_until_due'} ) {
@@ -146,11 +148,13 @@ UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
message_name => 'item due' } );
# warn( Data::Dumper->Dump( [ $borrower_preferences ], [ 'borrower_preferences' ] ) );
- next DUEITEM unless $borrower_preferences;
+ next unless $borrower_preferences;
if ( $borrower_preferences->{'wants_digest'} ) {
# cache this one to process after we've run through all of the items.
- $due_digest->{$upcoming->{'borrowernumber'}}++;
+ my $digest = $due_digest->{$upcoming->{'borrowernumber'}} ||= {};
+ $digest->{email} ||= $from_address;
+ $digest->{count}++;
} else {
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
my $letter_type = 'DUE';
@@ -179,7 +183,9 @@ UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
if ( $borrower_preferences->{'wants_digest'} ) {
# cache this one to process after we've run through all of the items.
- $upcoming_digest->{$upcoming->{'borrowernumber'}}++;
+ my $digest = $upcoming_digest->{$upcoming->{'borrowernumber'}} ||= {};
+ $digest->{email} ||= $from_address;
+ $digest->{count}++;
} else {
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
my $letter_type = 'PREDUE';
@@ -211,6 +217,7 @@ UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
foreach my $transport ( @{$borrower_preferences->{'transports'}} ) {
C4::Letters::EnqueueLetter( { letter => $letter,
borrowernumber => $upcoming->{'borrowernumber'},
+ from_address => $from_address,
message_transport_type => $transport } );
}
}
@@ -231,7 +238,10 @@ SELECT biblio.*, items.*, issues.*
AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
END_SQL
-PATRON: while ( my ( $borrowernumber, $count ) = each %$upcoming_digest ) {
+PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
+ my $count = $digest->{count};
+ my $from_address = $digest->{email};
+
my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
message_name => 'advance notice' } );
# warn( Data::Dumper->Dump( [ $borrower_preferences ], [ 'borrower_preferences' ] ) );
@@ -241,6 +251,7 @@ PATRON: while ( my ( $borrowernumber, $count ) = each %$upcoming_digest ) {
my $letter_type = 'PREDUEDGST';
my $letter = C4::Letters::getletter( 'circulation', $letter_type );
die "no letter of type '$letter_type' found. Please see sample_notices.sql" unless $letter;
+
$sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'});
my $titles = "";
while ( my $item_info = $sth->fetchrow_hashref()) {
@@ -261,13 +272,17 @@ PATRON: while ( my ( $borrowernumber, $count ) = each %$upcoming_digest ) {
foreach my $transport ( @{$borrower_preferences->{'transports'}} ) {
C4::Letters::EnqueueLetter( { letter => $letter,
borrowernumber => $borrowernumber,
+ from_address => $from_address,
message_transport_type => $transport } );
}
}
}
# Now, run through all the people that want digests and send them
-PATRON: while ( my ( $borrowernumber, $count ) = each %$due_digest ) {
+PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
+ my $count = $digest->{count};
+ my $from_address = $digest->{email};
+
my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
message_name => 'item due' } );
# warn( Data::Dumper->Dump( [ $borrower_preferences ], [ 'borrower_preferences' ] ) );
@@ -297,6 +312,7 @@ PATRON: while ( my ( $borrowernumber, $count ) = each %$due_digest ) {
foreach my $transport ( @{$borrower_preferences->{'transports'}} ) {
C4::Letters::EnqueueLetter( { letter => $letter,
borrowernumber => $borrowernumber,
+ from_address => $from_address,
message_transport_type => $transport } );
}
}
--
1.7.4
More information about the Koha-patches
mailing list