|
Lines 34-39
use Pod::Usage qw( pod2usage );
Link Here
|
| 34 |
use C4::Circulation qw( LostItem MarkIssueReturned ); |
34 |
use C4::Circulation qw( LostItem MarkIssueReturned ); |
| 35 |
use C4::Context; |
35 |
use C4::Context; |
| 36 |
use C4::Log qw( cronlogaction ); |
36 |
use C4::Log qw( cronlogaction ); |
|
|
37 |
use C4::Letters; |
| 37 |
use Koha::ItemTypes; |
38 |
use Koha::ItemTypes; |
| 38 |
use Koha::Patron::Categories; |
39 |
use Koha::Patron::Categories; |
| 39 |
use Koha::Patrons; |
40 |
use Koha::Patrons; |
|
Lines 54-59
my $man=0;
Link Here
|
| 54 |
my $list_categories = 0; |
55 |
my $list_categories = 0; |
| 55 |
my $list_itemtypes = 0; |
56 |
my $list_itemtypes = 0; |
| 56 |
my @skip_lost_values; |
57 |
my @skip_lost_values; |
|
|
58 |
my ($mail, $code, $branchcode, $letter_template); |
| 57 |
|
59 |
|
| 58 |
my $command_line_options = join(" ",@ARGV); |
60 |
my $command_line_options = join(" ",@ARGV); |
| 59 |
|
61 |
|
|
Lines 76-81
GetOptions(
Link Here
|
| 76 |
'skip-itemtype=s' => $skip_itemtype, |
78 |
'skip-itemtype=s' => $skip_itemtype, |
| 77 |
'list-itemtypes' => \$list_itemtypes, |
79 |
'list-itemtypes' => \$list_itemtypes, |
| 78 |
'skip-lost-value=s' => \@skip_lost_values, |
80 |
'skip-lost-value=s' => \@skip_lost_values, |
|
|
81 |
'mail' => \$mail, |
| 82 |
'code=s' => \$code, |
| 83 |
'branchcode=s' => \$branchcode, |
| 79 |
); |
84 |
); |
| 80 |
|
85 |
|
| 81 |
if ( $man ) { |
86 |
if ( $man ) { |
|
Lines 240-245
Display short help message an exit.
Link Here
|
| 240 |
|
245 |
|
| 241 |
Display entire manual and exit. |
246 |
Display entire manual and exit. |
| 242 |
|
247 |
|
|
|
248 |
=item B<--mail > |
| 249 |
|
| 250 |
Send a mail based on configured letter template. |
| 251 |
|
| 252 |
=item B<--code > |
| 253 |
|
| 254 |
Get notice template code for longoverdue mail. |
| 255 |
|
| 256 |
=item B<--branchcode > |
| 257 |
|
| 258 |
Specify particular branchcode for longoverdue mail. |
| 259 |
|
| 243 |
=back |
260 |
=back |
| 244 |
|
261 |
|
| 245 |
=cut |
262 |
=cut |
|
Lines 317-324
if ( scalar @$skip_borrower_category == 0 ) {
Link Here
|
| 317 |
|
334 |
|
| 318 |
unless ($confirm) { |
335 |
unless ($confirm) { |
| 319 |
$verbose = 1; # If you're not running it for real, then the whole point is the print output. |
336 |
$verbose = 1; # If you're not running it for real, then the whole point is the print output. |
| 320 |
print "### TEST MODE -- NO ACTIONS TAKEN ###\n"; |
337 |
print "### TEST MODE -- NO ACTIONS TAKEN ###\n"; |
| 321 |
} |
338 |
} |
| 322 |
|
339 |
|
| 323 |
cronlogaction({ info => $command_line_options }); |
340 |
cronlogaction({ info => $command_line_options }); |
| 324 |
|
341 |
|
|
Lines 441-446
if ( @$skip_itemtype ) {
Link Here
|
| 441 |
%itemtype_to_process = ( %itemtype_to_process, map { $_ => 0 } @$skip_itemtype ); |
458 |
%itemtype_to_process = ( %itemtype_to_process, map { $_ => 0 } @$skip_itemtype ); |
| 442 |
} |
459 |
} |
| 443 |
|
460 |
|
|
|
461 |
if ( $mail && !$code || $mail && !$branchcode) { |
| 462 |
print "Argument -code or -branchcode missing for mail option\n"; |
| 463 |
} else { |
| 464 |
$letter_template = Koha::Notice::Templates->find_effective_template( |
| 465 |
{ |
| 466 |
module => 'circulation', |
| 467 |
code => $code, |
| 468 |
branchcode => $branchcode, |
| 469 |
} |
| 470 |
); |
| 471 |
} |
| 472 |
|
| 444 |
my $filter_itemtypes = ( scalar @$itemtype || scalar @$skip_itemtype ); |
473 |
my $filter_itemtypes = ( scalar @$itemtype || scalar @$skip_itemtype ); |
| 445 |
|
474 |
|
| 446 |
my $count; |
475 |
my $count; |
|
Lines 452-457
my $i = 0;
Link Here
|
| 452 |
# We need a better way to handle this. |
481 |
# We need a better way to handle this. |
| 453 |
# |
482 |
# |
| 454 |
my $sth_items = longoverdue_sth({ skip_lost_values => \@skip_lost_values }); |
483 |
my $sth_items = longoverdue_sth({ skip_lost_values => \@skip_lost_values }); |
|
|
484 |
my $reminders_email; |
| 485 |
my $letter; |
| 486 |
my $admin_email_address; |
| 455 |
|
487 |
|
| 456 |
foreach my $startrange (sort keys %$lost) { |
488 |
foreach my $startrange (sort keys %$lost) { |
| 457 |
if( my $lostvalue = $lost->{$startrange} ) { |
489 |
if( my $lostvalue = $lost->{$startrange} ) { |
|
Lines 499-504
foreach my $startrange (sort keys %$lost) {
Link Here
|
| 499 |
MarkIssueReturned($row->{borrowernumber},$row->{itemnumber},undef,$patron->privacy) |
531 |
MarkIssueReturned($row->{borrowernumber},$row->{itemnumber},undef,$patron->privacy) |
| 500 |
} |
532 |
} |
| 501 |
} |
533 |
} |
|
|
534 |
if ($letter_template) { |
| 535 |
|
| 536 |
$letter = $letter_template->unblessed; |
| 537 |
my $library = Koha::Libraries->find($branchcode); |
| 538 |
$admin_email_address = $library->from_email_address; |
| 539 |
|
| 540 |
my $borrowernumber = $row->{borrowernumber}; |
| 541 |
my $itemnumber = $row->{itemnumber}; |
| 542 |
my $patron = Koha::Patrons->find($borrowernumber); |
| 543 |
my $notice_email = $patron->email; |
| 544 |
|
| 545 |
if ($notice_email) { |
| 546 |
$reminders_email->{$borrowernumber}->{'email'} = |
| 547 |
$notice_email; |
| 548 |
push |
| 549 |
@{ $reminders_email->{$borrowernumber}->{'itemnumbers'} }, |
| 550 |
$itemnumber; |
| 551 |
} |
| 552 |
} elsif ($mail) { |
| 553 |
print "\nLetter template not found\n"; |
| 554 |
} |
| 555 |
|
| 502 |
$count++; |
556 |
$count++; |
| 503 |
} |
557 |
} |
| 504 |
push @report, { |
558 |
push @report, { |
|
Lines 533-536
if (!$quiet){
Link Here
|
| 533 |
print "\nTOTAL: $total items\n"; |
587 |
print "\nTOTAL: $total items\n"; |
| 534 |
} |
588 |
} |
| 535 |
|
589 |
|
| 536 |
cronlogaction({ action => 'End', info => "COMPLETED" }); |
590 |
if ($reminders_email) { |
|
|
591 |
foreach ( keys %$reminders_email ) { |
| 592 |
my $items_due = |
| 593 |
join( ";", @{ %$reminders_email{$_}->{'itemnumbers'} } ); |
| 594 |
|
| 595 |
C4::Letters::EnqueueLetter( |
| 596 |
{ |
| 597 |
letter => $letter, |
| 598 |
borrowernumber => $_, |
| 599 |
message_transport_type => 'email', |
| 600 |
from_address => $admin_email_address, |
| 601 |
to_address => %$reminders_email{$_}->{'email'}, |
| 602 |
items => $items_due, |
| 603 |
} |
| 604 |
); |
| 605 |
|
| 606 |
printf( |
| 607 |
"\nEnqueue mail to %s - borrowernumber %s for longoverdue on item(s): %s\n", |
| 608 |
%$reminders_email{$_}->{'email'}, |
| 609 |
$_, $items_due |
| 610 |
); |
| 611 |
} |
| 612 |
} |
| 613 |
else { |
| 614 |
if ($mail) { |
| 615 |
print "\nNo mail add to enqueue list\n"; |
| 616 |
} |
| 617 |
} |
| 618 |
|
| 619 |
cronlogaction({ action => 'End', info => "COMPLETED" }); |
| 537 |
- |
|
|