|
Lines 59-64
use Koha::DateUtils;
Link Here
|
| 59 |
use C4::Log; |
59 |
use C4::Log; |
| 60 |
use Koha::Libraries; |
60 |
use Koha::Libraries; |
| 61 |
use Koha::Patrons; |
61 |
use Koha::Patrons; |
|
|
62 |
use Koha::Patron::Message::Preferences; |
| 62 |
|
63 |
|
| 63 |
=head1 NAME |
64 |
=head1 NAME |
| 64 |
|
65 |
|
|
Lines 242-252
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
| 242 |
my $borrower_preferences; |
243 |
my $borrower_preferences; |
| 243 |
if ( 0 == $upcoming->{'days_until_due'} ) { |
244 |
if ( 0 == $upcoming->{'days_until_due'} ) { |
| 244 |
# This item is due today. Send an 'item due' message. |
245 |
# This item is due today. Send an 'item due' message. |
| 245 |
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, |
246 |
$borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ |
| 246 |
message_name => 'item_due' } ); |
247 |
borrowernumber => $upcoming->{'borrowernumber'}, |
|
|
248 |
message_name => 'item_due', |
| 249 |
}); |
| 247 |
next unless $borrower_preferences; |
250 |
next unless $borrower_preferences; |
| 248 |
|
251 |
|
| 249 |
if ( $borrower_preferences->{'wants_digest'} ) { |
252 |
if ( $borrower_preferences->wants_digest ) { |
| 250 |
# cache this one to process after we've run through all of the items. |
253 |
# cache this one to process after we've run through all of the items. |
| 251 |
$due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address; |
254 |
$due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address; |
| 252 |
$due_digest->{ $upcoming->{borrowernumber} }->{count}++; |
255 |
$due_digest->{ $upcoming->{borrowernumber} }->{count}++; |
|
Lines 261-267
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
| 261 |
} |
264 |
} |
| 262 |
|
265 |
|
| 263 |
## Get branch info for borrowers home library. |
266 |
## Get branch info for borrowers home library. |
| 264 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
267 |
foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { |
| 265 |
my $letter = parse_letter( { letter_code => $letter_type, |
268 |
my $letter = parse_letter( { letter_code => $letter_type, |
| 266 |
borrowernumber => $upcoming->{'borrowernumber'}, |
269 |
borrowernumber => $upcoming->{'borrowernumber'}, |
| 267 |
branchcode => $upcoming->{'branchcode'}, |
270 |
branchcode => $upcoming->{'branchcode'}, |
|
Lines 275-293
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
| 275 |
} |
278 |
} |
| 276 |
} |
279 |
} |
| 277 |
} else { |
280 |
} else { |
| 278 |
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, |
281 |
$borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ |
| 279 |
message_name => 'advance_notice' } ); |
282 |
borrowernumber => $upcoming->{'borrowernumber'}, |
| 280 |
next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'}; |
283 |
message_name => 'advance_notice', |
| 281 |
next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'}; |
284 |
}); |
| 282 |
|
285 |
next UPCOMINGITEM unless $borrower_preferences && $borrower_preferences->days_in_advance; |
| 283 |
if ( $borrower_preferences->{'wants_digest'} ) { |
286 |
next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'}; |
|
|
287 |
|
| 288 |
if ( $borrower_preferences->wants_digest ) { |
| 284 |
# cache this one to process after we've run through all of the items. |
289 |
# cache this one to process after we've run through all of the items. |
| 285 |
$upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address; |
290 |
$upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address; |
| 286 |
$upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++; |
291 |
$upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++; |
| 287 |
} else { |
292 |
} else { |
| 288 |
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} ); |
293 |
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} ); |
| 289 |
my $letter_type = 'PREDUE'; |
294 |
my $letter_type = 'PREDUE'; |
| 290 |
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'}); |
295 |
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance); |
| 291 |
my $titles = ""; |
296 |
my $titles = ""; |
| 292 |
while ( my $item_info = $sth->fetchrow_hashref()) { |
297 |
while ( my $item_info = $sth->fetchrow_hashref()) { |
| 293 |
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields; |
298 |
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields; |
|
Lines 295-301
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
| 295 |
} |
300 |
} |
| 296 |
|
301 |
|
| 297 |
## Get branch info for borrowers home library. |
302 |
## Get branch info for borrowers home library. |
| 298 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
303 |
foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) { |
| 299 |
my $letter = parse_letter( { letter_code => $letter_type, |
304 |
my $letter = parse_letter( { letter_code => $letter_type, |
| 300 |
borrowernumber => $upcoming->{'borrowernumber'}, |
305 |
borrowernumber => $upcoming->{'borrowernumber'}, |
| 301 |
branchcode => $upcoming->{'branchcode'}, |
306 |
branchcode => $upcoming->{'branchcode'}, |
|
Lines 346-359
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
Link Here
|
| 346 |
my $count = $digest->{count}; |
351 |
my $count = $digest->{count}; |
| 347 |
my $from_address = $digest->{email}; |
352 |
my $from_address = $digest->{email}; |
| 348 |
|
353 |
|
| 349 |
my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber, |
354 |
my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ |
| 350 |
message_name => 'advance_notice' } ); |
355 |
borrowernumber => $borrowernumber, |
|
|
356 |
message_name => 'advance_notice', |
| 357 |
}); |
| 351 |
next PATRON unless $borrower_preferences; # how could this happen? |
358 |
next PATRON unless $borrower_preferences; # how could this happen? |
| 352 |
|
359 |
|
| 353 |
|
360 |
|
| 354 |
my $letter_type = 'PREDUEDGST'; |
361 |
my $letter_type = 'PREDUEDGST'; |
| 355 |
|
362 |
|
| 356 |
$sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'}); |
363 |
$sth->execute($borrowernumber,$borrower_preferences->days_in_advance); |
| 357 |
my $titles = ""; |
364 |
my $titles = ""; |
| 358 |
while ( my $item_info = $sth->fetchrow_hashref()) { |
365 |
while ( my $item_info = $sth->fetchrow_hashref()) { |
| 359 |
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields; |
366 |
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields; |
|
Lines 363-369
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
Link Here
|
| 363 |
## Get branch info for borrowers home library. |
370 |
## Get branch info for borrowers home library. |
| 364 |
my %branch_info = get_branch_info( $borrowernumber ); |
371 |
my %branch_info = get_branch_info( $borrowernumber ); |
| 365 |
|
372 |
|
| 366 |
foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { |
373 |
foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) { |
| 367 |
my $letter = parse_letter( |
374 |
my $letter = parse_letter( |
| 368 |
{ |
375 |
{ |
| 369 |
letter_code => $letter_type, |
376 |
letter_code => $letter_type, |
|
Lines 405-412
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
Link Here
|
| 405 |
my $count = $digest->{count}; |
412 |
my $count = $digest->{count}; |
| 406 |
my $from_address = $digest->{email}; |
413 |
my $from_address = $digest->{email}; |
| 407 |
|
414 |
|
| 408 |
my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber, |
415 |
my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({ |
| 409 |
message_name => 'item_due' } ); |
416 |
borrowernumber => $borrowernumber, |
|
|
417 |
message_name => 'item_due', |
| 418 |
}); |
| 410 |
next PATRON unless $borrower_preferences; # how could this happen? |
419 |
next PATRON unless $borrower_preferences; # how could this happen? |
| 411 |
|
420 |
|
| 412 |
my $letter_type = 'DUEDGST'; |
421 |
my $letter_type = 'DUEDGST'; |
|
Lines 420-426
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
Link Here
|
| 420 |
## Get branch info for borrowers home library. |
429 |
## Get branch info for borrowers home library. |
| 421 |
my %branch_info = get_branch_info( $borrowernumber ); |
430 |
my %branch_info = get_branch_info( $borrowernumber ); |
| 422 |
|
431 |
|
| 423 |
for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { |
432 |
for my $transport ( keys %{ $borrower_preferences->message_transport_types } ) { |
| 424 |
my $letter = parse_letter( |
433 |
my $letter = parse_letter( |
| 425 |
{ |
434 |
{ |
| 426 |
letter_code => $letter_type, |
435 |
letter_code => $letter_type, |