|
Lines 47-53
overdue_notices.pl - prepare messages to be sent to patrons for overdue items
Link Here
|
| 47 |
|
47 |
|
| 48 |
=head1 SYNOPSIS |
48 |
=head1 SYNOPSIS |
| 49 |
|
49 |
|
| 50 |
overdue_notices.pl [ -n ] [ -library <branchcode> ] [ -library <branchcode>...] [ -max <number of days> ] [ -csv [ <filename> ] ] [ -itemscontent <field list> ] |
50 |
overdue_notices.pl |
|
|
51 |
[ -n ][ -library <branchcode> ][ -library <branchcode> ... ] |
| 52 |
[ -max <number of days> ][ -csv [<filename>] ][ -itemscontent <field list> ] |
| 53 |
[ -email <email_type> ... ] |
| 51 |
|
54 |
|
| 52 |
Options: |
55 |
Options: |
| 53 |
-help brief help message |
56 |
-help brief help message |
|
Lines 60-65
overdue_notices.pl [ -n ] [ -library <branchcode> ] [ -library <branchcode>...]
Link Here
|
| 60 |
-itemscontent <list of fields> item information in templates |
63 |
-itemscontent <list of fields> item information in templates |
| 61 |
-borcat <categorycode> category code that must be included |
64 |
-borcat <categorycode> category code that must be included |
| 62 |
-borcatout <categorycode> category code that must be excluded |
65 |
-borcatout <categorycode> category code that must be excluded |
|
|
66 |
-email <email_type> type of email that will be used. Can be 'email', 'emailpro' or 'B_email'. Repeatable. |
| 63 |
|
67 |
|
| 64 |
=head1 OPTIONS |
68 |
=head1 OPTIONS |
| 65 |
|
69 |
|
|
Lines 147-152
Choose list-all to include all overdue items in the list (limited by B<-max> set
Link Here
|
| 147 |
|
151 |
|
| 148 |
use it in order to send overdues on a specific date and not Now. |
152 |
use it in order to send overdues on a specific date and not Now. |
| 149 |
|
153 |
|
|
|
154 |
=item B<-email> |
| 155 |
|
| 156 |
Allows to specify which type of email will be used. Can be email, emailpro or B_email. Repeatable. |
| 157 |
|
| 150 |
=back |
158 |
=back |
| 151 |
|
159 |
|
| 152 |
=head1 DESCRIPTION |
160 |
=head1 DESCRIPTION |
|
Lines 256-261
my $verbose = 0;
Link Here
|
| 256 |
my $nomail = 0; |
264 |
my $nomail = 0; |
| 257 |
my $MAX = 90; |
265 |
my $MAX = 90; |
| 258 |
my @branchcodes; # Branch(es) passed as parameter |
266 |
my @branchcodes; # Branch(es) passed as parameter |
|
|
267 |
my @emails_to_use; # Emails to use for messaging |
| 268 |
my @emails; # Emails given in command-line parameters |
| 259 |
my $csvfilename; |
269 |
my $csvfilename; |
| 260 |
my $htmlfilename; |
270 |
my $htmlfilename; |
| 261 |
my $triggered = 0; |
271 |
my $triggered = 0; |
|
Lines 280-285
GetOptions(
Link Here
|
| 280 |
'date' => \$date, |
290 |
'date' => \$date, |
| 281 |
'borcat=s' => \@myborcat, |
291 |
'borcat=s' => \@myborcat, |
| 282 |
'borcatout=s' => \@myborcatout, |
292 |
'borcatout=s' => \@myborcatout, |
|
|
293 |
'email=s' => \@emails, |
| 283 |
) or pod2usage(2); |
294 |
) or pod2usage(2); |
| 284 |
pod2usage(1) if $help; |
295 |
pod2usage(1) if $help; |
| 285 |
pod2usage( -verbose => 2 ) if $man; |
296 |
pod2usage( -verbose => 2 ) if $man; |
|
Lines 472-477
END_SQL
Link Here
|
| 472 |
) = $sth->fetchrow ) |
483 |
) = $sth->fetchrow ) |
| 473 |
{ |
484 |
{ |
| 474 |
$verbose and warn "borrower $firstname, $lastname ($borrowernumber) has items triggering level $i."; |
485 |
$verbose and warn "borrower $firstname, $lastname ($borrowernumber) has items triggering level $i."; |
|
|
486 |
@emails_to_use = (); |
| 487 |
if ( !$nomail) { |
| 488 |
if ( @emails ) { |
| 489 |
my $memberinfos = C4::Members::GetMember(borrowernumber => $borrowernumber); |
| 490 |
foreach (@emails) { |
| 491 |
push @emails_to_use, $memberinfos->{$_} |
| 492 |
if ($memberinfos->{$_} ne ''); |
| 493 |
} |
| 494 |
} |
| 495 |
else { |
| 496 |
$email = |
| 497 |
C4::Members::GetFirstValidEmailAddress($borrowernumber); |
| 498 |
push @emails_to_use, $email if ($email ne ''); |
| 499 |
} |
| 500 |
} |
| 501 |
|
| 502 |
my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"}, $branchcode ); |
| 503 |
|
| 504 |
unless ($letter) { |
| 505 |
$verbose and warn "Message '$overdue_rules->{letter$i}' content not found"; |
| 506 |
|
| 507 |
# might as well skip while PERIOD, no other borrowers are going to work. |
| 508 |
# FIXME : Does this mean a letter must be defined in order to trigger a debar ? |
| 509 |
next PERIOD; |
| 510 |
} |
| 475 |
|
511 |
|
| 476 |
if ( $overdue_rules->{"debarred$i"} ) { |
512 |
if ( $overdue_rules->{"debarred$i"} ) { |
| 477 |
|
513 |
|
|
Lines 489-495
END_SQL
Link Here
|
| 489 |
my $j = 0; |
525 |
my $j = 0; |
| 490 |
my $exceededPrintNoticesMaxLines = 0; |
526 |
my $exceededPrintNoticesMaxLines = 0; |
| 491 |
while ( my $item_info = $sth2->fetchrow_hashref() ) { |
527 |
while ( my $item_info = $sth2->fetchrow_hashref() ) { |
| 492 |
if ( ( !$email || $nomail ) && $PrintNoticesMaxLines && $j >= $PrintNoticesMaxLines ) { |
528 |
if ( ( scalar(@emails_to_use) == 0 || $nomail ) && $PrintNoticesMaxLines && $j >= $PrintNoticesMaxLines ) { |
| 493 |
$exceededPrintNoticesMaxLines = 1; |
529 |
$exceededPrintNoticesMaxLines = 1; |
| 494 |
last; |
530 |
last; |
| 495 |
} |
531 |
} |
|
Lines 501-507
END_SQL
Link Here
|
| 501 |
} |
537 |
} |
| 502 |
$sth2->finish; |
538 |
$sth2->finish; |
| 503 |
|
539 |
|
| 504 |
my $letter = parse_letter( |
540 |
$letter = parse_letter( |
| 505 |
{ letter_code => $overdue_rules->{"letter$i"}, |
541 |
{ letter_code => $overdue_rules->{"letter$i"}, |
| 506 |
borrowernumber => $borrowernumber, |
542 |
borrowernumber => $borrowernumber, |
| 507 |
branchcode => $branchcode, |
543 |
branchcode => $branchcode, |
|
Lines 552-563
END_SQL
Link Here
|
| 552 |
} |
588 |
} |
| 553 |
); |
589 |
); |
| 554 |
} else { |
590 |
} else { |
| 555 |
if ($email) { |
591 |
if (scalar(@emails_to_use) > 0 ) { |
| 556 |
C4::Letters::EnqueueLetter( |
592 |
C4::Letters::EnqueueLetter( |
| 557 |
{ letter => $letter, |
593 |
{ letter => $letter, |
| 558 |
borrowernumber => $borrowernumber, |
594 |
borrowernumber => $borrowernumber, |
| 559 |
message_transport_type => 'email', |
595 |
message_transport_type => 'email', |
| 560 |
from_address => $admin_email_address, |
596 |
from_address => $admin_email_address, |
|
|
597 |
to_address => join(',', @emails_to_use), |
| 561 |
} |
598 |
} |
| 562 |
); |
599 |
); |
| 563 |
} else { |
600 |
} else { |
| 564 |
- |
|
|