Lines 222-234
END_SQL
Link Here
|
222 |
|
222 |
|
223 |
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress'); |
223 |
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress'); |
224 |
|
224 |
|
|
|
225 |
my @letters; |
225 |
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { |
226 |
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { |
226 |
warn 'examining ' . $upcoming->{'itemnumber'} . ' upcoming due items' if $verbose; |
227 |
warn 'examining ' . $upcoming->{'itemnumber'} . ' upcoming due items' if $verbose; |
227 |
# warn( Data::Dumper->Dump( [ $upcoming ], [ 'overdue' ] ) ); |
228 |
# warn( Data::Dumper->Dump( [ $upcoming ], [ 'overdue' ] ) ); |
228 |
|
229 |
|
229 |
my $from_address = $upcoming->{branchemail} || $admin_adress; |
230 |
my $from_address = $upcoming->{branchemail} || $admin_adress; |
230 |
|
231 |
|
231 |
my $letter; |
|
|
232 |
my $borrower_preferences; |
232 |
my $borrower_preferences; |
233 |
if ( 0 == $upcoming->{'days_until_due'} ) { |
233 |
if ( 0 == $upcoming->{'days_until_due'} ) { |
234 |
# This item is due today. Send an 'item due' message. |
234 |
# This item is due today. Send an 'item due' message. |
Lines 253-266
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
253 |
} |
253 |
} |
254 |
|
254 |
|
255 |
## Get branch info for borrowers home library. |
255 |
## Get branch info for borrowers home library. |
256 |
$letter = parse_letter( { letter_code => $letter_type, |
256 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
|
|
257 |
my $letter = parse_letter( { letter_code => $letter_type, |
257 |
borrowernumber => $upcoming->{'borrowernumber'}, |
258 |
borrowernumber => $upcoming->{'borrowernumber'}, |
258 |
branchcode => $upcoming->{'branchcode'}, |
259 |
branchcode => $upcoming->{'branchcode'}, |
259 |
biblionumber => $biblio->{'biblionumber'}, |
260 |
biblionumber => $biblio->{'biblionumber'}, |
260 |
itemnumber => $upcoming->{'itemnumber'}, |
261 |
itemnumber => $upcoming->{'itemnumber'}, |
261 |
substitute => { 'items.content' => $titles } |
262 |
substitute => { 'items.content' => $titles }, |
|
|
263 |
message_transport_type => $transport, |
262 |
} ) |
264 |
} ) |
263 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
265 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
|
|
266 |
push @letters, $letter; |
267 |
} |
264 |
} |
268 |
} |
265 |
} else { |
269 |
} else { |
266 |
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, |
270 |
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'}, |
Lines 285-313
UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) {
Link Here
|
285 |
} |
289 |
} |
286 |
|
290 |
|
287 |
## Get branch info for borrowers home library. |
291 |
## Get branch info for borrowers home library. |
288 |
$letter = parse_letter( { letter_code => $letter_type, |
292 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
|
|
293 |
my $letter = parse_letter( { letter_code => $letter_type, |
289 |
borrowernumber => $upcoming->{'borrowernumber'}, |
294 |
borrowernumber => $upcoming->{'borrowernumber'}, |
290 |
branchcode => $upcoming->{'branchcode'}, |
295 |
branchcode => $upcoming->{'branchcode'}, |
291 |
biblionumber => $biblio->{'biblionumber'}, |
296 |
biblionumber => $biblio->{'biblionumber'}, |
292 |
itemnumber => $upcoming->{'itemnumber'}, |
297 |
itemnumber => $upcoming->{'itemnumber'}, |
293 |
substitute => { 'items.content' => $titles } |
298 |
substitute => { 'items.content' => $titles }, |
|
|
299 |
message_transport_type => $transport, |
294 |
} ) |
300 |
} ) |
295 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
301 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
|
|
302 |
push @letters, $letter; |
303 |
} |
296 |
} |
304 |
} |
297 |
} |
305 |
} |
298 |
|
306 |
|
299 |
# If we have prepared a letter, send it. |
307 |
# If we have prepared a letter, send it. |
300 |
if ($letter) { |
308 |
if ( @letters ) { |
301 |
if ($nomail) { |
309 |
if ($nomail) { |
302 |
local $, = "\f"; |
310 |
for my $letter ( @letters ) { |
303 |
print $letter->{'content'}; |
311 |
local $, = "\f"; |
|
|
312 |
print $letter->{'content'}; |
313 |
} |
304 |
} |
314 |
} |
305 |
else { |
315 |
else { |
306 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
316 |
for my $letter ( @letters ) { |
307 |
C4::Letters::EnqueueLetter( { letter => $letter, |
317 |
C4::Letters::EnqueueLetter( { letter => $letter, |
308 |
borrowernumber => $upcoming->{'borrowernumber'}, |
318 |
borrowernumber => $upcoming->{'borrowernumber'}, |
309 |
from_address => $from_address, |
319 |
from_address => $from_address, |
310 |
message_transport_type => $transport } ); |
320 |
message_transport_type => $letter->{message_transport_type} } ); |
311 |
} |
321 |
} |
312 |
} |
322 |
} |
313 |
} |
323 |
} |
Lines 326-332
SELECT biblio.*, items.*, issues.*
Link Here
|
326 |
AND issues.borrowernumber = ? |
336 |
AND issues.borrowernumber = ? |
327 |
AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?) |
337 |
AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?) |
328 |
END_SQL |
338 |
END_SQL |
329 |
|
339 |
@letters = (); |
330 |
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { |
340 |
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { |
331 |
my $count = $digest->{count}; |
341 |
my $count = $digest->{count}; |
332 |
my $from_address = $digest->{email}; |
342 |
my $from_address = $digest->{email}; |
Lines 349-382
PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
Link Here
|
349 |
## Get branch info for borrowers home library. |
359 |
## Get branch info for borrowers home library. |
350 |
my %branch_info = get_branch_info( $borrowernumber ); |
360 |
my %branch_info = get_branch_info( $borrowernumber ); |
351 |
|
361 |
|
352 |
my $letter = parse_letter( |
362 |
foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { |
353 |
{ |
363 |
my $letter = parse_letter( |
354 |
letter_code => $letter_type, |
364 |
{ |
355 |
borrowernumber => $borrowernumber, |
365 |
letter_code => $letter_type, |
356 |
substitute => { |
366 |
borrowernumber => $borrowernumber, |
357 |
count => $count, |
367 |
substitute => { |
358 |
'items.content' => $titles, |
368 |
count => $count, |
359 |
%branch_info, |
369 |
'items.content' => $titles, |
360 |
}, |
370 |
%branch_info, |
361 |
branchcode => $branch_info{ "branches.branchcode" }, |
371 |
}, |
362 |
} |
372 |
branchcode => $branch_info{"branches.branchcode"}, |
363 |
) |
373 |
message_transport_type => $transport, |
364 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
374 |
} |
365 |
if ($nomail) { |
375 |
) |
366 |
local $, = "\f"; |
376 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
367 |
print $letter->{'content'}; |
377 |
push @letters, $letter; |
368 |
} |
378 |
} |
369 |
else { |
379 |
|
370 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
380 |
if ( @letters ) { |
371 |
C4::Letters::EnqueueLetter( { letter => $letter, |
381 |
if ($nomail) { |
372 |
borrowernumber => $borrowernumber, |
382 |
for my $letter ( @letters ) { |
373 |
from_address => $from_address, |
383 |
local $, = "\f"; |
374 |
message_transport_type => $transport } ); |
384 |
print $letter->{'content'}; |
|
|
385 |
} |
386 |
} |
387 |
else { |
388 |
for my $letter ( @letters ) { |
389 |
C4::Letters::EnqueueLetter( { letter => $letter, |
390 |
borrowernumber => $borrowernumber, |
391 |
from_address => $from_address, |
392 |
message_transport_type => $letter->{message_transport_type} } ); |
393 |
} |
375 |
} |
394 |
} |
376 |
} |
395 |
} |
377 |
} |
396 |
} |
378 |
|
397 |
|
379 |
# Now, run through all the people that want digests and send them |
398 |
# Now, run through all the people that want digests and send them |
|
|
399 |
@letters = (); |
380 |
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { |
400 |
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { |
381 |
my $count = $digest->{count}; |
401 |
my $count = $digest->{count}; |
382 |
my $from_address = $digest->{email}; |
402 |
my $from_address = $digest->{email}; |
Lines 397-428
PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
Link Here
|
397 |
## Get branch info for borrowers home library. |
417 |
## Get branch info for borrowers home library. |
398 |
my %branch_info = get_branch_info( $borrowernumber ); |
418 |
my %branch_info = get_branch_info( $borrowernumber ); |
399 |
|
419 |
|
400 |
my $letter = parse_letter( |
420 |
for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) { |
401 |
{ |
421 |
my $letter = parse_letter( |
402 |
letter_code => $letter_type, |
422 |
{ |
403 |
borrowernumber => $borrowernumber, |
423 |
letter_code => $letter_type, |
404 |
substitute => { |
424 |
borrowernumber => $borrowernumber, |
405 |
count => $count, |
425 |
substitute => { |
406 |
'items.content' => $titles, |
426 |
count => $count, |
407 |
%branch_info, |
427 |
'items.content' => $titles, |
408 |
}, |
428 |
%branch_info, |
409 |
branchcode => $branch_info{ "branches.branchcode" }, |
429 |
}, |
410 |
} |
430 |
branchcode => $branch_info{"branches.branchcode"}, |
411 |
) |
431 |
message_transport_type => $transport, |
412 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
432 |
} |
413 |
|
433 |
) |
414 |
if ($nomail) { |
434 |
or die "no letter of type '$letter_type' found. Please see sample_notices.sql"; |
415 |
local $, = "\f"; |
435 |
push @letters, $letter; |
416 |
print $letter->{'content'}; |
|
|
417 |
} |
436 |
} |
418 |
else { |
437 |
|
419 |
foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) { |
438 |
if ( @letters ) { |
420 |
C4::Letters::EnqueueLetter( { letter => $letter, |
439 |
if ($nomail) { |
421 |
borrowernumber => $borrowernumber, |
440 |
for my $letter ( @letters ) { |
422 |
from_address => $from_address, |
441 |
local $, = "\f"; |
423 |
message_transport_type => $transport } ); |
442 |
print $letter->{'content'}; |
|
|
443 |
} |
444 |
} |
445 |
else { |
446 |
for my $letter ( @letters ) { |
447 |
C4::Letters::EnqueueLetter( { letter => $letter, |
448 |
borrowernumber => $borrowernumber, |
449 |
from_address => $from_address, |
450 |
message_transport_type => $letter->{message_transport_type} } ); |
451 |
} |
424 |
} |
452 |
} |
425 |
} |
453 |
} |
|
|
454 |
|
426 |
} |
455 |
} |
427 |
|
456 |
|
428 |
=head1 METHODS |
457 |
=head1 METHODS |
Lines 457-462
sub parse_letter {
Link Here
|
457 |
branchcode => $table_params{'branches'}, |
486 |
branchcode => $table_params{'branches'}, |
458 |
substitute => $params->{'substitute'}, |
487 |
substitute => $params->{'substitute'}, |
459 |
tables => \%table_params, |
488 |
tables => \%table_params, |
|
|
489 |
message_transport_type => $params->{message_transport_type}, |
460 |
); |
490 |
); |
461 |
} |
491 |
} |
462 |
|
492 |
|
463 |
- |
|
|