use C4::Members;
use C4::Members::Messaging;
use C4::Overdues;
-use C4::Dates qw/format_date/;
+use Koha::DateUtils;
# These are defaults for command line options.
the process_message_queue.pl cronjob.
See the comments in the script for directions on changing the script.
This script has the following parameters :
- -c Confirm and remove this help & warning
- -m maximum number of days in advance to send advance notices.
- -n send No mail. Instead, all mail messages are printed on screen. Usefull for testing purposes.
- -v verbose
- -i csv list of fields that get substituted into templates in places
- of the E<lt>E<lt>items.contentE<gt>E<gt> placeholder. Defaults to
- issuedate,title,barcode,author
+ -c Confirm and remove this help & warning
+ -m maximum number of days in advance to send advance notices.
+ -n send No mail. Instead, all mail messages are printed on screen. Usefull for testing purposes.
+ -v verbose
ENDUSAGE
# Since advance notice options are not visible in the web-interface
} else {
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
my $letter_type = 'DUE';
- $letter = C4::Letters::getletter( 'circulation', $letter_type );
- die "no letter of type '$letter_type' found. Please see sample_notices.sql" unless $letter;
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},'0');
my $titles = "";
while ( my $item_info = $sth->fetchrow_hashref()) {
$titles .= join("\t",@item_info) . "\n";
}
- $letter = parse_letter( { letter => $letter,
+ $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $upcoming->{'borrowernumber'},
branchcode => $upcoming->{'branchcode'},
biblionumber => $biblio->{'biblionumber'},
itemnumber => $upcoming->{'itemnumber'},
substitute => { 'items.content' => $titles }
- } );
+ } )
+ or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
}
} else {
$borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
} else {
my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
my $letter_type = 'PREDUE';
- $letter = C4::Letters::getletter( 'circulation', $letter_type );
- die "no letter of type '$letter_type' found. Please see sample_notices.sql" unless $letter;
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
my $titles = "";
while ( my $item_info = $sth->fetchrow_hashref()) {
$titles .= join("\t",@item_info) . "\n";
}
- $letter = parse_letter( { letter => $letter,
+ $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $upcoming->{'borrowernumber'},
branchcode => $upcoming->{'branchcode'},
biblionumber => $biblio->{'biblionumber'},
itemnumber => $upcoming->{'itemnumber'},
substitute => { 'items.content' => $titles }
- } );
+ } )
+ or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
}
}
my $letter_type = 'PREDUEDGST';
- my $letter = C4::Letters::getletter( 'circulation', $letter_type );
- die "no letter of type '$letter_type' found. Please see sample_notices.sql" unless $letter;
$sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'});
my $titles = "";
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
$titles .= join("\t",@item_info) . "\n";
}
- $letter = parse_letter( { letter => $letter,
+ my $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $borrowernumber,
substitute => { count => $count,
'items.content' => $titles
}
- } );
+ } )
+ or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
if ($nomail) {
local $, = "\f";
print $letter->{'content'};
next PATRON unless $borrower_preferences; # how could this happen?
my $letter_type = 'DUEDGST';
- my $letter = C4::Letters::getletter( 'circulation', $letter_type );
- die "no letter of type '$letter_type' found. Please see sample_notices.sql" unless $letter;
$sth->execute($borrowernumber,'0');
my $titles = "";
while ( my $item_info = $sth->fetchrow_hashref()) {
my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
$titles .= join("\t",@item_info) . "\n";
}
- $letter = parse_letter( { letter => $letter,
+ my $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $borrowernumber,
substitute => { count => $count,
'items.content' => $titles
}
- } );
+ } )
+ or die "no letter of type '$letter_type' found. Please see sample_notices.sql";
if ($nomail) {
local $, = "\f";
=head2 parse_letter
-
-
=cut
sub parse_letter {
my $params = shift;
- foreach my $required ( qw( letter borrowernumber ) ) {
+ foreach my $required ( qw( letter_code borrowernumber ) ) {
return unless exists $params->{$required};
}
- if ( $params->{'substitute'} ) {
- while ( my ($key, $replacedby) = each %{$params->{'substitute'}} ) {
- my $replacefield = "<<$key>>";
-
- $params->{'letter'}->{title} =~ s/$replacefield/$replacedby/g;
- $params->{'letter'}->{content} =~ s/$replacefield/$replacedby/g;
- }
- }
+ my %table_params = ( 'borrowers' => $params->{'borrowernumber'} );
- C4::Letters::parseletter( $params->{'letter'}, 'borrowers', $params->{'borrowernumber'} );
-
- if ( $params->{'branchcode'} ) {
- C4::Letters::parseletter( $params->{'letter'}, 'branches', $params->{'branchcode'} );
+ if ( my $p = $params->{'branchcode'} ) {
+ $table_params{'branches'} = $p;
}
- if ( $params->{'itemnumber'} ) {
- C4::Letters::parseletter( $params->{'letter'}, 'issues', $params->{'itemnumber'} );
- C4::Letters::parseletter( $params->{'letter'}, 'items', $params->{'itemnumber'} );
+ if ( my $p = $params->{'itemnumber'} ) {
+ $table_params{'issues'} = $p;
+ $table_params{'items'} = $p;
}
- if ( $params->{'biblionumber'} ) {
- C4::Letters::parseletter( $params->{'letter'}, 'biblio', $params->{'biblionumber'} );
- C4::Letters::parseletter( $params->{'letter'}, 'biblioitems', $params->{'biblionumber'} );
+ if ( my $p = $params->{'biblionumber'} ) {
+ $table_params{'biblio'} = $p;
+ $table_params{'biblioitems'} = $p;
}
- return $params->{'letter'};
+ return C4::Letters::GetPreparedLetter (
+ module => 'circulation',
+ letter_code => $params->{'letter_code'},
+ branchcode => $table_params{'branches'},
+ substitute => $params->{'substitute'},
+ tables => \%table_params,
+ );
+}
+
+sub format_date {
+ my $date_string = shift;
+ my $dt=dt_from_string($date_string);
+ return output_pref($dt);
}
1;