|
Lines 41-46
the OPAC.
Link Here
|
| 41 |
use strict; |
41 |
use strict; |
| 42 |
use warnings; |
42 |
use warnings; |
| 43 |
use Getopt::Long; |
43 |
use Getopt::Long; |
|
|
44 |
use Pod::Usage; |
| 44 |
use Data::Dumper; |
45 |
use Data::Dumper; |
| 45 |
BEGIN { |
46 |
BEGIN { |
| 46 |
# find Koha's Perl modules |
47 |
# find Koha's Perl modules |
|
Lines 56-61
use C4::Members::Messaging;
Link Here
|
| 56 |
use C4::Overdues; |
57 |
use C4::Overdues; |
| 57 |
use Koha::DateUtils; |
58 |
use Koha::DateUtils; |
| 58 |
|
59 |
|
|
|
60 |
=head1 NAME |
| 61 |
|
| 62 |
advance_notices.pl - prepare messages to be sent to patrons for nearly due, or due, items |
| 63 |
|
| 64 |
=head1 SYNOPSIS |
| 65 |
|
| 66 |
advance_notices.pl |
| 67 |
[ -n ][ -m <number of days> ][ --itemscontent <comma separated field list> ][ -c ] |
| 68 |
|
| 69 |
=head1 OPTIONS |
| 70 |
|
| 71 |
=over 8 |
| 72 |
|
| 73 |
=item B<--help> |
| 74 |
|
| 75 |
Print a brief help message and exits. |
| 76 |
|
| 77 |
=item B<--man> |
| 78 |
|
| 79 |
Prints the manual page and exits. |
| 80 |
|
| 81 |
=item B<-v> |
| 82 |
|
| 83 |
Verbose. Without this flag set, only fatal errors are reported. |
| 84 |
|
| 85 |
=item B<-n> |
| 86 |
|
| 87 |
Do not send any email. Advanced or due notices that would have been sent to |
| 88 |
the patrons are printed to standard out. |
| 89 |
|
| 90 |
=item B<-m> |
| 91 |
|
| 92 |
Defines the maximum number of days in advance to send advance notices. |
| 93 |
|
| 94 |
|
| 95 |
|
| 96 |
=item B<--itemscontent> |
| 97 |
|
| 98 |
comma separated list of fields that get substituted into templates in |
| 99 |
places of the E<lt>E<lt>items.contentE<gt>E<gt> placeholder. This |
| 100 |
defaults to due date,title,author,barcode |
| 101 |
|
| 102 |
Other possible values come from fields in the biblios, items and |
| 103 |
issues tables. |
| 104 |
|
| 105 |
=back |
| 106 |
|
| 107 |
=head1 DESCRIPTION |
| 108 |
|
| 109 |
This script is designed to alert patrons when items are due, or coming due |
| 110 |
|
| 111 |
=head2 Configuration |
| 112 |
|
| 113 |
This script pays attention to the advanced notice configuration |
| 114 |
performed by borrowers in the OPAC, or by staff in the patron detail page of the intranet. The content of the messages is configured in Tools -> Notices and slips. Advanced notices use the PREDUE template, due notices use DUE. More information about the use of this |
| 115 |
section of Koha is available in the Koha manual. |
| 116 |
|
| 117 |
=head2 Outgoing emails |
| 118 |
|
| 119 |
Typically, messages are prepared for each patron with due |
| 120 |
items, and who have selected (or the library has elected for them) Advance or Due notices. |
| 121 |
|
| 122 |
These emails are staged in the outgoing message queue, as are messages |
| 123 |
produced by other features of Koha. This message queue must be |
| 124 |
processed regularly by the |
| 125 |
F<misc/cronjobs/process_message_queue.pl> program. |
| 126 |
|
| 127 |
In the event that the C<-n> flag is passed to this program, no emails |
| 128 |
are sent. Instead, messages are sent on standard output from this |
| 129 |
program. They may be redirected to a file if desired. |
| 130 |
|
| 131 |
=head2 Templates |
| 132 |
|
| 133 |
Templates can contain variables enclosed in double angle brackets like |
| 134 |
E<lt>E<lt>thisE<gt>E<gt>. Those variables will be replaced with values |
| 135 |
specific to the overdue items or relevant patron. Available variables |
| 136 |
are: |
| 137 |
|
| 138 |
=over |
| 139 |
|
| 140 |
=item E<lt>E<lt>items.contentE<gt>E<gt> |
| 141 |
|
| 142 |
one line for each item, each line containing a tab separated list of |
| 143 |
title, author, barcode, issuedate |
| 144 |
|
| 145 |
=item E<lt>E<lt>borrowers.*E<gt>E<gt> |
| 146 |
|
| 147 |
any field from the borrowers table |
| 148 |
|
| 149 |
=item E<lt>E<lt>branches.*E<gt>E<gt> |
| 150 |
|
| 151 |
any field from the branches table |
| 152 |
|
| 153 |
=back |
| 154 |
|
| 155 |
=head1 SEE ALSO |
| 156 |
|
| 157 |
The F<misc/cronjobs/overdue_notices.pl> program allows you to send |
| 158 |
messages to patrons when their messages are overdue. |
| 159 |
=cut |
| 59 |
|
160 |
|
| 60 |
# These are defaults for command line options. |
161 |
# These are defaults for command line options. |
| 61 |
my $confirm; # -c: Confirm that the user has read and configured this script. |
162 |
my $confirm; # -c: Confirm that the user has read and configured this script. |
|
Lines 64-89
my $nomail; # -n: No mai
Link Here
|
| 64 |
my $mindays = 0; # -m: Maximum number of days in advance to send notices |
165 |
my $mindays = 0; # -m: Maximum number of days in advance to send notices |
| 65 |
my $maxdays = 30; # -e: the End of the time period |
166 |
my $maxdays = 30; # -e: the End of the time period |
| 66 |
my $verbose = 0; # -v: verbose |
167 |
my $verbose = 0; # -v: verbose |
| 67 |
my $itemscontent = join(',',qw( issuedate title barcode author )); |
168 |
my $itemscontent = join(',',qw( date_due title author barcode )); |
| 68 |
|
169 |
|
| 69 |
GetOptions( 'c' => \$confirm, |
170 |
my $help = 0; |
|
|
171 |
my $man = 0; |
| 172 |
|
| 173 |
GetOptions( |
| 174 |
'help|?' => \$help, |
| 175 |
'man' => \$man, |
| 176 |
'c' => \$confirm, |
| 70 |
'n' => \$nomail, |
177 |
'n' => \$nomail, |
| 71 |
'm:i' => \$maxdays, |
178 |
'm:i' => \$maxdays, |
| 72 |
'v' => \$verbose, |
179 |
'v' => \$verbose, |
| 73 |
'itemscontent=s' => \$itemscontent, |
180 |
'itemscontent=s' => \$itemscontent, |
| 74 |
); |
181 |
)or pod2usage(2); |
| 75 |
my $usage = << 'ENDUSAGE'; |
182 |
pod2usage(1) if $help; |
| 76 |
|
183 |
pod2usage( -verbose => 2 ) if $man;; |
| 77 |
This script prepares pre-due and item due reminders to be sent to |
|
|
| 78 |
patrons. It queues them in the message queue, which is processed by |
| 79 |
the process_message_queue.pl cronjob. |
| 80 |
See the comments in the script for directions on changing the script. |
| 81 |
This script has the following parameters : |
| 82 |
-c Confirm and remove this help & warning |
| 83 |
-m maximum number of days in advance to send advance notices. |
| 84 |
-n send No mail. Instead, all mail messages are printed on screen. Usefull for testing purposes. |
| 85 |
-v verbose |
| 86 |
ENDUSAGE |
| 87 |
|
184 |
|
| 88 |
# Since advance notice options are not visible in the web-interface |
185 |
# Since advance notice options are not visible in the web-interface |
| 89 |
# unless EnhancedMessagingPreferences is on, let the user know that |
186 |
# unless EnhancedMessagingPreferences is on, let the user know that |
|
Lines 97-111
To change this, edit the "EnhancedMessagingPreferences" syspref.
Link Here
|
| 97 |
|
194 |
|
| 98 |
END_WARN |
195 |
END_WARN |
| 99 |
} |
196 |
} |
| 100 |
|
|
|
| 101 |
unless ($confirm) { |
197 |
unless ($confirm) { |
| 102 |
print $usage; |
198 |
pod2usage(1); |
| 103 |
print "Do you wish to continue? (y/n)"; |
|
|
| 104 |
chomp($_ = <STDIN>); |
| 105 |
exit unless (/^y/i); |
| 106 |
|
| 107 |
} |
199 |
} |
| 108 |
|
|
|
| 109 |
# The fields that will be substituted into <<items.content>> |
200 |
# The fields that will be substituted into <<items.content>> |
| 110 |
my @item_content_fields = split(/,/,$itemscontent); |
201 |
my @item_content_fields = split(/,/,$itemscontent); |
| 111 |
|
202 |
|
| 112 |
- |
|
|